Het ACID-model van databaseontwerp is een van de oudste en belangrijkste concepten van databasetheorie. Er worden vier doelen gesteld die elk databasebeheersysteem moet nastreven: atomiciteit, consistentie, isolatie en duurzaamheid. Een relationele database die niet aan een van deze vier doelen voldoet, kan niet als betrouwbaar worden beschouwd. Een database met deze kenmerken wordt als ACID-compatibel beschouwd.
ACID Defined
Laten we een moment nemen om elk van deze kenmerken in detail te onderzoeken:
- valentie stelt dat database-aanpassingen een "alles of niets" -regel moeten volgen. Elke transactie wordt 'atomisch' genoemd. Als een deel van de transactie mislukt, mislukt de hele transactie. Het is van cruciaal belang dat het databasebeheersysteem de atomaire aard van transacties handhaaft ondanks DBMS, besturingssysteem of hardwarefout.
- Consistentie stelt dat alleen geldige gegevens naar de database worden geschreven. Als om de een of andere reden een transactie wordt uitgevoerd die de consistentieregels van de database schendt, wordt de volledige transactie teruggedraaid en wordt de database hersteld naar een staat die overeenkomt met die regels. Aan de andere kant, als een transactie met succes wordt uitgevoerd, zal de database van de ene staat komen die consistent is met de regels naar een andere staat die ook consistent is met de regels.
- Isolatie vereist dat meerdere transacties die tegelijkertijd plaatsvinden geen invloed hebben op elkaars uitvoering. Als Joe bijvoorbeeld een transactie tegen een database uitgeeft op hetzelfde moment dat Mary een andere transactie afgeeft, moeten beide transacties op een geïsoleerde manier in de database worden uitgevoerd. De database moet de volledige transactie van Joe uitvoeren voordat ze Mary's uitvoert, of omgekeerd. Dit voorkomt dat de transactie van Joe intermediaire gegevens leest die zijn geproduceerd als bijwerking van een deel van de transactie van Mary die uiteindelijk niet aan de database zal worden toegewezen. Merk op dat de isolatie-eigenschap niet garandeert welke transactie eerst zal worden uitgevoerd - alleen dat transacties elkaar niet zullen hinderen
- Duurzaamheid zorgt ervoor dat elke transactie die aan de database is toegewezen, niet verloren gaat. De duurzaamheid wordt verzekerd door het gebruik van databaseback-ups en transactielogboeken die het herstel van toegezegde transacties vergemakkelijken, ondanks eventuele latere software- of hardwarefouten.
Hoe ACID in de praktijk werkt
Databasebeheerders gebruiken verschillende strategieën om ACID af te dwingen.
Eentje die wordt gebruikt om atomiciteit en duurzaamheid af te dwingen is inschrijfregistratie (WAL), waarin elk transactiedetail voor het eerst wordt geschreven naar een logboek dat zowel overhaal- als ongedaan-maken-informatie bevat. Dit zorgt ervoor dat, gegeven een databasefout van welke aard dan ook, de database het logboek kan controleren en de inhoud ervan kan vergelijken met de status van de database.
Een andere methode die wordt gebruikt om atomiciteit en duurzaamheid aan te pakken is shadow-paging, waarin een schaduwpagina wordt gemaakt wanneer gegevens moeten worden gewijzigd. De updates van de query worden naar de schaduwpagina geschreven in plaats van naar de echte gegevens in de database. De database zelf wordt alleen gewijzigd als de bewerking is voltooid.
Een andere strategie wordt de in twee fasen verbinden protocol, vooral handig in gedistribueerde databasesystemen. Dit protocol scheidt een verzoek om gegevens in twee fasen te wijzigen: een commit-request-fase en een commit-fase. In de aanvraagfase moeten alle DBMS's in een netwerk die door de transactie worden beïnvloed, bevestigen dat ze deze hebben ontvangen en de capaciteit hebben om de transactie uit te voeren. Nadat de bevestiging van alle relevante DBMS's is ontvangen, voltooit de commit-fase waarin de gegevens daadwerkelijk zijn gewijzigd.




