Een transactie kan worden gedefinieerd als een groep van taken. Een enkele taak is de minimale verwerkingseenheid die niet verder kan worden opgedeeld.
Laten we een voorbeeld nemen van een eenvoudige transactie. Stel dat een bankbediende Rs 500 overschrijft van de rekening van A naar de rekening van B. Deze zeer eenvoudige en kleine transactie omvat verschillende taken op laag niveau.
A’s rekening
Open_Account(A)Old_Balance = A.balanceNew_Balance = Old_Balance - 500A.balance = New_BalanceClose_Account(A)
B’s rekening
Open_Account(B)Old_Balance = B.balanceNew_Balance = Old_Balance + 500B.balance = New_BalanceClose_Account(B)
ACID-eigenschappen
Een transactie is een zeer kleine eenheid van een programma en kan verschillende taken op laag niveau bevatten. Een transactie in een databasesysteem moet Atomicity, Consistency, Isolation, and Durability – beter bekend als ACID-eigenschappen – behouden om nauwkeurigheid, volledigheid en data-integriteit te garanderen.
-
Atomicity – Deze eigenschap stelt dat een transactie als een atomaire eenheid moet worden behandeld, dat wil zeggen dat ofwel alle operaties worden uitgevoerd ofwel geen enkele. Er mag geen toestand in een database zijn waarin een transactie gedeeltelijk voltooid blijft. Toestanden moeten ofwel vóór de uitvoering van de transactie ofwel na de uitvoering/afbreking/falen van de transactie worden gedefinieerd.
-
Consistentie – De database moet na elke transactie in een consistente staat blijven. Geen enkele transactie mag een nadelig effect hebben op de gegevens die zich in de database bevinden. Als de database zich in een consistente staat bevond voordat een transactie werd uitgevoerd, moet deze ook na de uitvoering van de transactie consistent blijven.
-
Duurzaamheid – De database moet duurzaam genoeg zijn om alle laatste updates te behouden, zelfs als het systeem uitvalt of opnieuw wordt opgestart. Als een transactie een stuk gegevens in een database bijwerkt en vastlegt, dan zal de database de gewijzigde gegevens vasthouden. Als een transactie wordt vastgelegd, maar het systeem faalt voordat de gegevens naar de schijf kunnen worden geschreven, dan worden de gegevens bijgewerkt zodra het systeem weer actief is.
-
Insolatie – In een databasesysteem waarin meer dan één transactie tegelijkertijd en parallel wordt uitgevoerd, bepaalt de eigenschap van isolatie dat alle transacties worden uitgevoerd alsof het de enige transactie in het systeem is. Geen enkele transactie zal het bestaan van een andere transactie beïnvloeden.
Serialiseerbaarheid
Wanneer meerdere transacties door het besturingssysteem in een multiprogrammeeromgeving worden uitgevoerd, bestaat de mogelijkheid dat instructies van de ene transactie met die van een andere transactie worden verweven.
-
Schema – Een chronologische uitvoeringsvolgorde van een transactie wordt een schema genoemd. Een schema kan vele transacties bevatten, die elk uit een aantal instructies/taken bestaan.
-
Serieel schema – Dit is een schema waarin transacties zodanig op elkaar zijn afgestemd dat één transactie als eerste wordt uitgevoerd. Wanneer de eerste transactie haar cyclus heeft voltooid, wordt de volgende transactie uitgevoerd. De transacties worden na elkaar geordend. Dit type schema wordt een serieel schema genoemd, omdat transacties serieel worden uitgevoerd.
In een omgeving met meerdere transacties worden seriële schema’s als een benchmark beschouwd. De uitvoeringsvolgorde van een instructie in een transactie kan niet worden gewijzigd, maar twee transacties kunnen hun instructies wel op willekeurige wijze laten uitvoeren. Deze uitvoering kan geen kwaad als twee transacties onderling onafhankelijk zijn en op verschillende gegevenssegmenten werken; maar als deze twee transacties op dezelfde gegevens werken, kunnen de resultaten variëren. Dit steeds veranderende resultaat kan de database in een inconsistente toestand brengen.
Om dit probleem op te lossen, staan we parallelle uitvoering van een transactieschema toe, als de transacties ofwel serieeliseerbaar zijn, ofwel een of andere gelijkwaardigheidsrelatie tussen hen hebben.
Equivalentieschema’s
Equivalentieschema’s kunnen van het volgende type zijn –
Resultaatsequivalentie
Als twee schema’s na uitvoering hetzelfde resultaat opleveren, wordt gezegd dat ze resultaatsequivalent zijn. Ze kunnen hetzelfde resultaat opleveren voor een bepaalde waarde en verschillende resultaten voor een andere reeks waarden. Daarom wordt deze equivalentie in het algemeen niet als significant beschouwd.
Beeld-equivalentie
Twee schema’s zouden beeld-equivalent zijn als de transacties in beide schema’s vergelijkbare acties op een vergelijkbare manier uitvoeren.
Voorbeeld –
-
Als T de initiële gegevens in S1 leest, dan leest het ook de initiële gegevens in S2.
-
Als T de door J in S1 geschreven waarde leest, dan leest het ook de door J in S2 geschreven waarde.
-
Als T de laatste schrijfopdracht uitvoert op de gegevenswaarde in S1, dan voert het ook de laatste schrijfopdracht uit op de gegevenswaarde in S2.
Gelijkwaardigheid van conflicten
Twee schema’s zijn conflicterend als ze de volgende eigenschappen hebben –
- Beide behoren tot afzonderlijke transacties.
- Beide hebben toegang tot hetzelfde gegevensitem.
- Minimaal een van beide is een “schrijf”-bewerking.
Twee schema’s met meerdere transacties met conflicterende bewerkingen worden conflict-equivalent genoemd als en slechts als –
- Beide schema’s bevatten dezelfde verzameling Transacties.
- De volgorde van conflicterende bewerkingsparen wordt in beide schema’s gehandhaafd.
Note – View-equivalente schema’s zijn view serializable en conflict-equivalente schema’s zijn conflict serializable. Alle conflict-serieelizable schema’s zijn ook view serializable.
States of Transactions
Een transactie in een database kan zich in een van de volgende states bevinden –
-
Active – In deze status wordt de transactie uitgevoerd. Dit is de begintoestand van elke transactie.
-
Partially Committed – Wanneer een transactie haar laatste bewerking uitvoert, wordt gezegd dat ze zich in een gedeeltelijk gecommitteerde toestand bevindt.
-
Failed – Er is sprake van een mislukte transactie als een van de controles die door het databankherstelsysteem worden uitgevoerd, mislukt. Een mislukte transactie kan niet meer worden voortgezet.
- Afgebroken – Als een van de controles mislukt en de transactie een mislukte status heeft bereikt, rolt de recovery manager alle schrijfoperaties op de database terug om de database terug te brengen naar de oorspronkelijke staat waarin deze zich bevond voordat de transactie werd uitgevoerd. Transacties in deze toestand worden afgebroken genoemd. De databaseherstelmodule kan een van de twee operaties kiezen nadat een transactie is afgebroken –
- Herstart de transactie
- Dood de transactie
-
Gecommitteerd – Als een transactie alle operaties met succes heeft uitgevoerd, wordt gezegd dat deze is gecommitteerd. Alle effecten ervan zijn nu permanent vastgelegd op het databasesysteem.