Vakgroep Telecommunicatie en Informatieverwerking 1 Werken met databasesystemen: delen van gegevens Hoofdstuk 11 Database, Document and Content Management
Vakgroep Telecommunicatie en Informatieverwerking 2 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 3 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 4 De behoefte aan ‘concurrency’-controle Gelijktijdige verwerking van transacties –Parallelle verwerking –‘Interleaved’ verwerking transactie A parallelle transacties processor 1 (a)(b) transactie B processor 2 “interleaved” transacties transactie Atransactie B processor 1
Vakgroep Telecommunicatie en Informatieverwerking 5 De behoefte aan ‘concurrency’-controle Soorten problemen bij het ‘gelijktijdig’ verwerking van transacties –‘Lost update’-problemen De aanpassingsoperatie van de ene transactie wordt overschreven door de aanpassingsoperatie van een andere transactie.
Vakgroep Telecommunicatie en Informatieverwerking 6 De behoefte aan ‘concurrency’-controle tijd … lees d … lees d … t1t1 t2t2 t3t3 t4t4 pas d aan … pas d aan … gaat verloren op t 4 ! transactie B transactie A
Vakgroep Telecommunicatie en Informatieverwerking 7 De behoefte aan ‘concurrency’-controle –‘Uncommitted dependency’-problemen Een transactie werkt met data die werden aangepast door een andere transactie en nadien ongeldig worden doordat deze aanpassing bij een ‘rollback’ van de andere transactie ongedaan wordt gemaakt. Dirty read
Vakgroep Telecommunicatie en Informatieverwerking 8 De behoefte aan ‘concurrency’-controle tijd … pas d aan … t1t1 t2t2 t3t3 lees d … ROLLBACK d wordt ongeldig op t 3 ! transactie B transactie A
Vakgroep Telecommunicatie en Informatieverwerking 9 De behoefte aan ‘concurrency’-controle –Problemen van inconsistente analyse Een transactie past gegevens aan terwijl een andere transactie nog bezig is met de verwerking van deze gegevens. Nonrepeatable read Phantom read
Vakgroep Telecommunicatie en Informatieverwerking 10 De behoefte aan ‘concurrency’-controle tijd lees Eigenaar3 pas Eigenaar3 aan lees Eigenaar1 pas Eigenaar1 aan COMMIT t1t1 t2t2 t3t3 lees Eigenaar1 totaal = 45 lees Eigenaar2 totaal = 75 transactie B transactie A fout: moet 100 zijn! t7t7 t8t8 t4t4 t5t5 t6t6 lees Eigenaar3 totaal = 90 Eigenaar 1 Eigenaar 3 Eigenaar
Vakgroep Telecommunicatie en Informatieverwerking 11 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 12 Serialiseerbaarheid van transacties Serialiseerbaarheid –Seriële sequentie –Omvormingsregels Als een instructiesequentie van (‘gelijktijdige’) transacties via omvormingsregels kan worden omge- zet naar een seriële sequentie zegt men dat de instructiesequentie serialiseerbaar is. De instructie- sequentie produceert dan dezelfde resultaten als de verkregen seriële sequentie.
Vakgroep Telecommunicatie en Informatieverwerking 13 Serialiseerbaarheid van transacties –Conflictserialiseerbaarheidsregels Als twee instructies alleen gegevens lezen, conflicteren ze niet en kan hun volgorde in de instructiesequentie worden omgewisseld. Als twee instructies elk verschillende data lezen of aanpassen, conflicteren ze niet en kan hun volgorde in de instructiesequentie worden omgewisseld. Als de ene instructie data aanpast en een andere instructie dezelfde data leest of aanpast, moet hun volgorde in de instructiesequentie behouden blijven.
Vakgroep Telecommunicatie en Informatieverwerking 14 Serialiseerbaarheid van transacties tijd t1t1 t2t2 t3t3 start trans. lees d1 pas d1 aan transactie A t7t7 t8t8 t4t4 t5t5 t6t6 t9t9 t 10 start trans. lees d1 pas d1 aan transactie B lees d2 pas d2 aan COMMIT t 11 lees d2 COMMIT start trans. lees d1 pas d1 aan transactie A start trans. lees d1 transactie B lees d2 COMMIT start trans. lees d1 pas d1 aan lees d2 pas d2 aan COMMIT transactie A start trans. lees d1 pas d1 aan lees d2 COMMIT transactie B pas d2 aan COMMIT pas d1 aan …
Vakgroep Telecommunicatie en Informatieverwerking 15 Serialiseerbaarheid van transacties Werken met isolatieniveaus –Isolatieniveau ‘Read uncommitted’. Een transactie kan data lezen die aangepast, maar nog niet bevestigd zijn door een andere transactie. Transacties kunnen data aanpassen of toevoegen terwijl een andere transactie met deze data werkt. Hierdoor loopt men risico op ‘dirty read’, ‘nonrepeatable read’ en ‘phantom read’. ‘Read committed’. Deze optie beveiligt tegen ‘dirty read’. ‘Nonrepeatable read’ en ‘phantom read’ blijven mogelijk.
Vakgroep Telecommunicatie en Informatieverwerking 16 Serialiseerbaarheid van transacties ‘Repeatable read’. Deze optie beveiligt tegen ‘dirty read’ en ‘nonrepeatable read’. ‘Phantom read’ blijft mogelijk. ‘Serializable’. Deze optie vereist dat de instructiesequenties serialiseerbaar zijn.
Vakgroep Telecommunicatie en Informatieverwerking 17 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 18 ‘Timestamping’-methoden Principe –Oudere transacties krijgen bij conflict steeds voorrang op jongere transacties –‘Timestamp’ aan het begin van elke transactie –‘Lees-timestamp’ –‘aanpassing-timestamp’ Een timestamp is een unieke identificator die de relatieve starttijd van een transactie aanduidt.
Vakgroep Telecommunicatie en Informatieverwerking 19 ‘Timestamping’-methoden Basisregels –Als een transactie een gegeven wenst te lezen of aan te passen, wordt dit alleen toegestaan als de recentste aanpassing op dat gegeven gebeurde door een oudere transactie. –In het andere geval wordt het lezen of aanpassen geweigerd en wordt de transactie ongedaan gemaakt (‘rollback’) en opnieuw opgestart met een nieuwe, recentere ‘timestamp’
Vakgroep Telecommunicatie en Informatieverwerking 20 ‘Timestamping’-methoden Basisprotocol –Transactie T wil het gegeven d lezen Als transactie T een gegeven d wil lezen dat werd aangepast door een recentere transactie, dan moet T worden afgebroken (‘rollback’) en met een nieuwe timestamp opnieuw worden opgestart. Als transactie T een gegeven d wil lezen dat niet werd aangepast door een recentere transactie, dan kan T zijn leesoperatie uitvoeren. Nadien wordt de lees-timestamp van d als volgt geactualiseerd: lees-timestamp(d) = max( timestamp(T), lees-timestamp(d) )
Vakgroep Telecommunicatie en Informatieverwerking 21 ‘Timestamping’-methoden –Transactie T wil het gegeven d aanpassen. Als transactie T een gegeven d wil aanpassen dat reeds gelezen werd door een recentere transactie, dan moet T worden afgebroken (‘rollback’) en opnieuw met een nieuwe timestamp worden opgestart. Als transactie T een gegeven d wil aanpassen dat reeds aangepast werd door een recentere transactie, dan moet T worden afgebroken (‘rollback’) en opnieuw een nieuwe timestamp worden opgestart.
Vakgroep Telecommunicatie en Informatieverwerking 22 ‘Timestamping’-methoden In alle andere gevallen, kan transactie T de aanpassing uitvoeren. Nadien wordt de aanpassing-timestamp van d als volgt geactualiseerd: aanpassing-timestamp(d) = timestamp(T)
Vakgroep Telecommunicatie en Informatieverwerking 23 ‘Timestamping’-methoden De aanpassingsregel van Thomas Als transactie T een gegeven d wil aanpassen dat reeds aangepast werd door een recentere transactie, dan kan de aanpassing door T veilig worden genegeerd zonder dat T moet worden afgebroken. Granulariteit Hoe groot is de data-eenheid waaraan de ‘timestamp’ wordt gekoppeld? ‘Lost update’-problemen opnieuw bekeken
Vakgroep Telecommunicatie en Informatieverwerking 24 ‘Timestamping’-methoden tijd … lees d … lees d … t2t2 t4t4 t5t5 t6t6 pas d aan ROLLBACK … pas d aan … transactie B transactie A t1t1 t3t3 timestamp( transactie A ) = t 1 tijd t2t2 t4t4 t5t5 t6t6 t1t1 t3t3 lees-timestamp( d ) = t 1 t8t8 t9t9 aanpassing-timestamp( d ) = t 7 timestamp( transactie B ) = t 3 lees-timestamp( d ) = t 3 t 1 < t 3 … lees d … pas d aan aanpassing-timestamp( d ) = t 3 timestamp( transactie A ) = t 7 t7t7 lees-timestamp( d ) = t 7
Vakgroep Telecommunicatie en Informatieverwerking 25 ‘Timestamping’-methoden ‘Uncommitted dependency’-problemen opnieuw bekeken tijd … lees d … pas d aan … t2t2 t4t4 ROLLBACK transactie B transactie A t1t1 t3t3 timestamp( transactie B ) = t 1 tijd t2t2 t4t4 t5t5 t1t1 t3t3 timestamp( transactie A ) = t 3 aanpassing-timestamp( d ) = t 1 lees-timestamp( d ) = t 3
Vakgroep Telecommunicatie en Informatieverwerking 26 ‘Timestamping’-methoden Problemen van inconsistente analyse opnieuw bekeken tijd lees Eig.3 pas Eig.3 aan lees Eig.1 pas Eig.1 aan COMMIT t1t1 t2t2 t3t3 lees Eig.1 totaal = 45 lees Eig.2 totaal = 75 transactie B transactie A timestamp( transactie A ) = t 1 tijd t2t2 t4t4 t1t1 t3t3 lees-timestamp( Eig.1 ) = t 1 t5t5 t5t5 t4t4 t7t7 t7t7 t8t8 t6t6 t6t6 t8t8 lees-timestamp( Eig.2 ) = t 1 timestamp( transactie B ) = t 4 lees-timestamp( Eig.3 ) = t 4 aanpassing-timestamp( Eig.3 ) = t 4 lees-timestamp( Eig.1 ) = t 4 aanpassing-timestamp( Eig.1 ) = t 4
Vakgroep Telecommunicatie en Informatieverwerking 27 ‘Timestamping’-methoden Problemen van inconsistente analyse opnieuw bekeken (vervolg) tijd transactie A lees Eig.3 ROLLBACK tijd t9t9 lees Eig.1 totaal = 45 lees Eig.2 totaal = 75 lees Eig.3 totaal = 100 t9t9 t 11 t 12 t 11 t 12 t 10 t 13 t 1 < t 4 timestamp( transactie A ) = t 10 lees-timestamp( Eig.1 ) = t 10 lees-timestamp( Eig.2 ) = t 10 lees-timestamp( Eig.3 ) = t 10
Vakgroep Telecommunicatie en Informatieverwerking 28 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 29 ‘Locking’-methoden Principe –Alvorens een transactie een gegeven kan lezen of aanpassen moet het daartoe eerst een gepaste ‘lock’ op het gegeven verkrijgen Een lock is een soort van reservering op een gegeven, waardoor een transactie een exclusieve of gedeelde toegang tot het gegeven krijgt en de gewenste operatie kan uitvoeren.
Vakgroep Telecommunicatie en Informatieverwerking 30 ‘Locking’-methoden –Exclusieve en gedeelde locks gedeeld vraagt exclusief niets gedeeld exclusief niets bestaat geen conflict geen conflict geen conflict geen conflict geen conflict geen conflict
Vakgroep Telecommunicatie en Informatieverwerking 31 ‘Locking’-methoden Basisregels –Een transactie die een gegeven wil lezen, moet daartoe eerst een gedeelde ‘lock’ op het gegeven hebben gekregen van het dbms. –Een transactie die een gegeven wil aanpassen, moet daartoe eerst een exclusieve ‘lock’ op het gegeven hebben gekregen van het dbms.
Vakgroep Telecommunicatie en Informatieverwerking 32 ‘Locking’-methoden Basisprotocol –Een transactie die een gegeven wil lezen, moet eerst een gedeelde ‘lock’ op het gegeven verkrijgen. Dit houdt in dat geen enkele andere transactie een exclusieve ‘lock’ op het gegeven mag hebben.
Vakgroep Telecommunicatie en Informatieverwerking 33 ‘Locking’-methoden –Een transactie die een gegeven wil aanpassen, moet eerst een exclusieve ‘lock’ op het gegeven verkrijgen. Dit houdt in dat geen enkele andere transactie een gedeelde ‘lock’ of exclusieve ‘lock’ op het gegeven mag hebben. Als de transactie die de exclusieve ‘lock’ vraagt, de enige transactie is met een ‘lock’ op het gegeven – wat dan noodzakelijk een gedeelde ‘lock’ moet zijn – dan wordt deze gedeelde ‘lock’ gepromoveerd tot een exclusieve ‘lock’.
Vakgroep Telecommunicatie en Informatieverwerking 34 ‘Locking’-methoden –Als een ‘lock’-aanvraag door een transactie niet onmiddellijk kan worden ingewilligd omdat een andere transactie een conflicterende ‘lock’ op het gegeven heeft, moet de transactie door het dbms in een wachttoestand worden gezet. Deze wachttoestand duurt net zo lang tot de andere transactie de conflicterende ‘lock’ vrijgeeft. –Exclusieve en gedeelde ‘locks’ worden vrijgegeven aan het einde van de transactie.
Vakgroep Telecommunicatie en Informatieverwerking 35 ‘Locking’-methoden Het ‘twee-fase locking’-protocol Het ‘twee-fase locking’-protocol houdt in dat een transactie kan worden opgedeeld in twee fasen. In een eerste fase, die de groeifase wordt genoemd, kan de transactie ‘locks’ aanvragen en toegekend krijgen. In de tweede fase, die de krimpfase wordt genoemd, worden de verkregen ‘locks’ vrijgegeven. Tijdens de krimpfase kan de transactie geen nieuwe ‘locks’ meer verkrijgen.
Vakgroep Telecommunicatie en Informatieverwerking 36 ‘Locking’-methoden Het ‘twee-fase locking’-theorema Granulariteit Als alle transacties werken volgens het ‘twee-fase locking’-protocol, dan zijn de instructie sequenties van alle ‘gelijktijdige’ uitvoeringen van deze transacties serialiseerbaar.
Vakgroep Telecommunicatie en Informatieverwerking 37 ‘Locking’-methoden ‘Lost update’-problemen opnieuw bekeken tijd … lees d … lees d … t1t1 t4t4 pas d aan … pas d aan transactie B transactie A tijd t1t1 t4t4 transactie A vraagt en krijgt gedeelde “lock” op d deadlock ! transactie B vraagt en krijgt gedeelde “lock” op d t2t2 t2t2 t3t3 t3t3 transactie A vraagt exclusieve “lock” op d, maar moet wachten wacht transactie B vraagt exclusieve “lock” op d, maar moet wachten tijd … lees d … lees d … t1t1 t4t4 pas d aan … pas d aan transactie B transactie A tijd t1t1 t4t4 transactie A vraagt en krijgt gedeelde “lock” op d transactie B vraagt en krijgt gedeelde “lock” op d t2t2 t2t2 t3t3 t3t3 transactie A vraagt exclusieve “lock” op d, maar moet wachten wacht transactie B vraagt exclusieve “lock” op d, maar moet wachten
Vakgroep Telecommunicatie en Informatieverwerking 38 ‘Locking’-methoden ‘Uncommitted dependency’-problemen opnieuw bekeken tijd … lees d … pas d aan … t1t1 t2t2 ROLLBACK transactie B transactie A tijd t1t1 t2t2 t3t3 lees d … wacht transactie B vraagt en krijgt exclusieve “lock” op d transactie A vraagt gedeelde “lock” op d, maar moet wachten transactie B geeft exclusieve “lock” op d vrij t4t4 t4t4 transactie A krijgt gedeelde “lock” op d en kan verder werken
Vakgroep Telecommunicatie en Informatieverwerking 39 ‘Locking’-methoden Problemen van inconsistente analyse opnieuw bekeken tijd lees Eig.3 pas Eig.3 aan lees Eig.1 pas Eig.1 aan t1t1 t2t2 t3t3 lees Eig.1 totaal = 45 lees Eig.2 totaal = 75 transactie B transactie A lees Eig.3 tijd t2t2 t4t4 t1t1 t3t3 t5t5 t5t5 t4t4 t7t7 t7t7 t6t6 t6t6 deadlock ! transactie B vraagt en krijgt gedeelde “lock” op Eig.1 wacht transactie B vraagt exclusieve “lock” op Eig.1, maar moet wachten transactie A vraagt en krijgt gedeelde “lock” op Eig.1 transactie A vraagt en krijgt gedeelde “lock” op Eig.2 transactie B vraagt en krijgt gedeelde “lock” op Eig.3 transactie B vraagt en krijgt exclusieve “lock” op Eig.3 (promotie) transactie A vraagt gedeelde “lock” op Eig.3, maar moet wachten wacht
Vakgroep Telecommunicatie en Informatieverwerking 40 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 41 Deadlock Omschrijving Een ‘deadlock’ is een situatie waarbij twee of meerdere transacties tegelijkertijd in een wachttoestand verkeren en elk van deze transacties, om zelf verder te kunnen werken, wacht op het moment dat één van de andere transacties ‘locks’ vrijgeeft.
Vakgroep Telecommunicatie en Informatieverwerking 42 Deadlock ‘Deadlock’-detectie –‘Wacht voor’-graaf Detectie van cycli Werken met tijdsinterval –Timeout A B C
Vakgroep Telecommunicatie en Informatieverwerking 43 Deadlock ‘Deadlock’-herstel –Transactie als slachtoffer aanduiden en afbreken –Opnieuw opstarten van de transactie Automatisch Na tussenkomst van de gebruiker –Keuze van het slachtoffer Recentst gestarte transactie Minste wijzigingen Transactie die betrokken is in het meeste deadlocks
Vakgroep Telecommunicatie en Informatieverwerking 44 Deadlock ‘Deadlock’-preventie –Timestamping van transacties ‘Wait-die’-techniek Een jongere transactie die moet wachten op een oudere transactie moet worden afgebroken. ‘Wound-wait’-techniek Als een oudere transactie moet wachten op een jongere transactie moet de jongere transactie worden afgebroken.
Vakgroep Telecommunicatie en Informatieverwerking 45 Overzicht De behoefte aan ‘concurrency’-controle Serialiseerbaarheid van transacties ‘Timestamping’-methoden ‘Locking’-methoden ‘Deadlock’ Optimistische methoden
Vakgroep Telecommunicatie en Informatieverwerking 46 Optimistische methoden Basisprincipe Net voor het succesvol beëindigen en bevestigen van een transactie wordt gecontroleerd of zich geen ‘concurrency’-problemen met de transactie hebben voorgedaan. Is dit zo dan wordt de transactie afgebroken en opnieuw opgestart.
Vakgroep Telecommunicatie en Informatieverwerking 47 Optimistische methoden Protocol –Leesfase: de transactie leest alle data die het nodig heeft uit de database en houdt een kopie van deze gegevens bij in lokale variabelen. Aanpassingen worden uitgevoerd op de lokale kopieën, niet op de database. De leesfase duurt tot net voor de bevestiging (‘commit’) van de transactie.
Vakgroep Telecommunicatie en Informatieverwerking 48 Optimistische methoden –Valideerfase: na de leesfase wordt er gecontroleerd of het uitvoeren van de lees- en/of aanpassingsoperaties op de database de serialiseerbaarheid van de transacties verhindert. Elke transactie A krijgt een ‘timestamp’ start(A) aan het begin van de transactie, een ‘timestamp’ validatie(A) aan het begin van de valideerfase en een ‘time-stamp’ einde(A) bij het einde van de transactie.
Vakgroep Telecommunicatie en Informatieverwerking 49 Optimistische methoden Om te slagen in de validatietest moet voldaan zijn aan één van de volgende voorwaarden: Alle transacties A die voor de beschouwde transactie B startten, moeten ook voor de start van transactie B zijn beëindigd. Als transactie B start voordat een vroegere transactie A werd beëindigd, dan –mag geen enkele van de gegevens die aangepast werden door A worden gelezen door B en –moet transactie A al zijn aanpassingoperaties hebben beëindigd voor de valideerfase van transactie B start. Als de validatietest niet slaagt, wordt transactie B afgebroken en opnieuw opgestart.
Vakgroep Telecommunicatie en Informatieverwerking 50 Optimistische methoden Als de validatietest slaagt, wordt de schrijffase uitgevoerd. Schrijffase: in deze fase worden de eventuele aanpassingen uit de lokale kopieën overgezet naar de database. Na succesvolle uitvoering van de overzettingen wordt de transactie bevestigd.