Transakce
Roman ŠpánekTU v Liberci5.1.2005
Transakce
Transakce = série příkazů čtení a zápisu do databáze
AAtomic CConsistency IIsolation DDurability 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 ManagementLock 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
DeadLock
Prevence (pomocí priorit T) Wait-Die Wound-Die
Detekce Wait-For Graph Time-out
Prevence x Detekce Kterou T abortovat
T1 T2
T3T4
T1 T2 T3 T4
S(A)
R(A)
X(B)
W(B)
S(B)
S(C)
R(C)
X(C)
X(B)
X(A)
Dynamické databáze
Phantom problem Index LockingT musí projít všechny stránky a zamknoutB+ stromyMultiple-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);
Recovery
Atomicity and durability properties ARIES recovery algorithm
AnalýzaREDOUNDO
update:
T1 W(P5)
update:
T2 W(P3)
T2
commit
T2
end
update:
T3 W(P1)
update:
T3 W(P3)
CRASH,
RESTART
10 20 30 40 50 60
ARIES al. - principy
Write-ahead loggingNejdří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
prevLSN transID type pegeID length offset before after
Transakce v SQLTRANSACTION 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
Úvod – Mobilní databázový systém
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
Správa dat Location Dependent Location Dependent
DataData LDD „Kde je nejbližší
restaurace?“ Odpověď zjevně závislá
na místě položení dotazu
Location Free DataLocation Free Data LFD
„Místo narození paní X?“
Odpověď nezávislá na místě položení dotazu
Mobilní transakce
MDS je dynamická varianta distribuovaného DS
Definice: Mobilní transakce je trojice <Fi, Li, FLMi> kde Fi je množina fragmentů, Li je množina lokací, a FLMi je množina zobrazení fragmentů.
Struktura sítě Hlavní problémy:
Bezpečnost Navázání komunikace Vytvoření skupiny
Ad-hoc mobilní sítě