170 likes | 328 Views
Transakce. Roman Špánek TU v Liberci 5.1.2005. Transakce. Transakce = série příkazů čtení a zápisu do databáze A tomic C onsistency I solation D urability ACID property. Typy konfliktů. WR T1 R(A), T1 W(A), T2 R(A), T1 commit, T2 commit RW T1 R(A), T2 W(A), T1 R(B), T1 R(A)
E N D
Transakce Roman Špánek TU v Liberci 5.1.2005
Transakce • Transakce = série příkazů čtení a zápisu do databáze • Atomic • Consistency • Isolation • Durability • ACID property
Typy konfliktů • WR • T1 R(A), T1 W(A), T2 R(A), T1 commit, T2 commit • RW • T1 R(A), T2 W(A), T1 R(B), T1 R(A) • WW (blind write) • T1 R(A), T1 W(A), T2 W(A), T1 commit, T2 commit
Concurrency Control • Lock Management • Lock Table • Počet T mající zámek na objektu • Typ zámku (S,X) • Pointer do řady čekatelů na zámek • Transaction table • Popis pro kažkou T • Ukazatel do seznamu zámků
Concurrency Control • 2PL (Two-Phase Locking) a Strict 2PL • Přidělování sdílených zámků • Atomicita zamykání • Lock Upgrade
T1 T3 T4 T2 DeadLock • Prevence (pomocí priorit T) • Wait-Die • Wound-Die • Detekce • Wait-For Graph • Time-out • Prevence x Detekce • Kterou T abortovat
Dynamické databáze • Phantom problem • Index Locking • T musí projít všechny stránky a zamknout • B+ stromy • Multiple-Granularity Locking • Soubor->Stránka->Záznam
Concurrency without Locking • Optimistic Concurrency Control • Timestamp-Based C.C. • Čtení: • If TS(T)<WTS(O) -> restart(T), TS++; • If TS(T)>WTS(O) -> read(O),RTS(O)=RTS(O)||TS(T); • Zápis: • If TS(T)<RTS(O) -> restart(T),konflikt • If TS(T)<WTS(O) -> Thomas Write Rule || Abort(T); • Else T Write(O), WTS(O)=TS(T);
CRASH, RESTART update: T1 W(P5) update: T2 W(P3) T2 commit T2 end update: T3 W(P1) update: T3 W(P3) 10 20 30 40 50 60 Recovery • Atomicity and durability properties • ARIES recovery algorithm • Analýza • REDO • UNDO
ARIES al. - principy • Write-ahead logging • Nejdříve do logu (uložen na stabilním místě) a pak změny zapsány do databáze • Repeating history during redo • Návrat do stavu v jakém byla DB v době pádu • Logging changes during undo • Pro případ opakovaného pádu
Log (žurnál) • Musí být zachován i při pádu (více kopií) • Každý záznam má unikátní ID (LSN) • Záznamy pro: • Update stránky, Commit, Abort, End, UNDO • Pomocí prevLSN, transID, type (typ záznamu) je „nalinkována“ minulost
Transakce v SQL TRANSACTION jméno_transakce WHENEVER{ERROR|podmínka} ROLLBACK příkazy COMMIT END • Příkazy z množiny manipulačních TRANSACTION dalsi_rok WHENEVER ERROR ROLLBACK UPDATE osoba SET vek=vek+1 COMMIT END
Hlavní překážky a problémy • Nízká přenosová rychlost • Ztráta spojení • Omezená kapacita baterií • Omezené (výpočetní, paměťové, …) prostředky • Rychlá změna pozice MU (Hand-off) • Omezený počet kanálů • Bezpečnost
Location Dependent DataLDD „Kde je nejbližší restaurace?“ Odpověď zjevně závislá na místě položení dotazu Location Free DataLFD „Místo narození paní X?“ Odpověď nezávislá na místě položení dotazu Správa dat
Mobilní transakce • MDS je dynamická varianta distribuovaného DS • Definice: Mobilní transakce je trojice <Fi, Li, FLMi> kdeFi je množina fragmentů, Li je množinalokací, a FLMi je množinazobrazení fragmentů.
Ad-hoc mobilní sítě • Struktura sítě • Hlavní problémy: • Bezpečnost • Navázání komunikace • Vytvoření skupiny