SQL server

Honza Pazdziora adelton na informatics.muni.cz
Pátek Květen 28 12:12:53 CEST 1999


> 
> Pripada mi to jako priklad na zamykani, nikoli na transakce. Jak
> Adeltom psal, napr. v Mysql je tohle resitelne, anzto ma zamykani, ale
> nema transakce.
> 
> Jeste ke transakcim: ze zde uverejnenych nazoru mam dojem, ze:
> 
> 1. jsou nezbytne jako ochrana pri jakemkoli zhrouceni (system, sit,..)
> nebo chybe programu
> 
> 2. v jinych pripadech se daji nahradit za cenu vetsi pracnosti v kodu
> 
> Kdyz pro jednoduchost bod 1 vypustim (system mi nepada, chybove stavy
> testuji) tak me zajima, zda opravdu existuje pripad, ze danou ulohu bez
> transakci _neudelam_. Jestli neni, tak se domnivam, ze transakce jsou sice
> pohodlne, ale draze zaplacene snizenim vykonu.

Nejsem schopen najit priklad, ktery byste bez transakci neudelal.
[ To ale neni zadny dukaz niceho ;-) ] Pokud predpokladam, ze server
a nic nespadne ani nebude timeoutovat, tak to znamena, ze programy
se chovaji deterministicky. V tom pripade jste schopen si vsechno,
co za Vas udelaji transakce, vykodovat zvlast, v aplikaci. Zamceni si
zaridite a vsechny podminky, na kterych by Vam mohla transakce
skoncit, si osetrite predem.

Jenze ono to ma jeden problem, a to ve velikosti projektu.
Predpokladajme, ze mate nejakou zakladni tabulku, treba
s identifikacemi platcu. Na tu tabulku mate pres foreign klic navazane
dalsi tabulky (pomijim zde fakt, ze MySQL foreign klice nema). Coz
znamena, ze nemuzete smazat platce, ktery uz neco zaplatil, ma nejaky
zaznam v podrizene tabulce. To bez transakci udelate, zamknete
a selectnete.

Catch ale prichazi v okamziku, kdy pridate dalsi tabulku, treba
o koresponcenci, o necem, co se na tu primarni vaze. V te chvili ve
transakcnim systemu s foreign klici pouze pridate foreign klic,
zatimco bez tohohle musite projit _vsechny_ aplikace, ktere sahaji
na tuhle primarni tabulici, a doplnit je o test na tu novou.

Proste IMHO se da i v systemu s transakcemi programovat tak, ze
nepotrebujete rollback (a ten se pouzije pouze pri neocekavanych
stavech). V tom pripade si testujete veci predem a pokud neni uplne
vse OK, tak zmeny nezacnete vubec provadet. A pokud vyloucite ty
neocekevane stavy, tak jste za vodou.

Tohle cele je o velikosti aplikace a z toho duvodu ani nema moc cenu
MySQL a Oracle srovnavat. Proste bud jste schopen si to osetrit
aplikacne a nepotrebujete, aby to za Vas delal RDBMS, nebo je to
proste tak velke, ze je skvele, pokud ty starosti muzete hodit na
databazi.

[ Cekam, kdy nas Yenya klepne pres prsty ... ]

------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 make vmlinux.exe			-- SGI Visual Workstation Howto
Any spam sent to my email will be rewarded by complaint to your ISP abuse
  team and abuse teams of servers that relayed that message. It works.


Další informace o konferenci Linux