Relationele databases zijn ontworpen met betrouwbaarheid en consistentie als kern. De ingenieurs die ze hebben ontwikkeld, hebben zich gericht op een transactiemodel dat ervoor zorgt dat de vier principes van het ACID-model altijd behouden blijven. De komst van een nieuw ongestructureerd databasemodel zet ACID echter op zijn kop. Het NoSQL-databasemodel schuwt het zeer gestructureerde relationele model ten gunste van een flexibele sleutel/waarde-opslagbenadering. Deze ongestructureerde benadering van data vereist een alternatief voor het ACID-model: het BASE-model.
Basisprincipes van het ACID-model
Er zijn vier basisprincipes van het ACID-model:
- De atomicity van transacties zorgt ervoor dat elke databasetransactie een enkele eenheid is die een "alles of niets"-benadering hanteert bij de uitvoering. Als een instructie in de transactie mislukt, wordt de hele transactie teruggedraaid.
- Relationele databases zorgen ook voor de consistentie van elke transactie met de bedrijfsregels van de database. Als een element van een atomaire transactie de consistentie van de database zou verstoren, mislukt de hele transactie.
- De database-engine dwingt isolatie af tussen meerdere transacties die op of bijna hetzelfde moment plaatsvinden. Elke transactie vindt plaats voor of na elke andere transactie, en de weergave van de database die een transactie aan het begin ziet, wordt alleen veranderd door de transactie zelf voordat deze wordt afgesloten. Geen enkele transactie mag ooit het tussenproduct van een andere transactie zien.
- Het laatste ACID-principe, durability, zorgt ervoor dat zodra een transactie is vastgelegd in de database, deze permanent wordt bewaard door het gebruik van back-ups en transactielogboeken. In het geval van een storing kunnen deze mechanismen worden gebruikt om vastgelegde transacties te herstellen.
Kernprincipes van BASE
NoSQL-databases, aan de andere kant, omarmen situaties waarin het ACID-model overkill is of in feite de werking van de database zou belemmeren. In plaats daarvan vertrouwt NoSQL op een zachter model dat toepasselijk het BASE-model wordt genoemd. Dit model biedt plaats aan de flexibiliteit die wordt geboden door NoSQL en vergelijkbare benaderingen voor het beheer en de curatie van ongestructureerde gegevens. BASE bestaat uit drie principes:
- Basisbeschikbaarheid De NoSQL-databasebenadering is gericht op de beschikbaarheid van gegevens, zelfs bij meerdere storingen. Dit wordt bereikt door een sterk gedistribueerde benadering van databasebeheer te gebruiken. In plaats van één grote datastore te onderhouden en te focussen op de fouttolerantie van die store, verspreiden NoSQL-databases data over veel storagesystemen met een hoge mate van replicatie. In het onwaarschijnlijke geval dat een storing de toegang tot een gegevenssegment verstoort, leidt dit niet noodzakelijk tot een volledige uitval van de database.
- Zachte staat. BASE-databases laten de consistentievereisten van het ACID-model vrijwel volledig los. Een van de basisconcepten achter BASE is dat gegevensconsistentie het probleem van de ontwikkelaar is en niet door de database moet worden afgehandeld.
- Eventuele consistentie De enige vereiste die NoSQL-databases hebben met betrekking tot consistentie, is dat gegevens op een bepaald moment in de toekomst zullen convergeren naar een consistente staat. Er worden echter geen garanties gegeven over wanneer dit zal gebeuren. Dat is een volledige afwijking van de onmiddellijke consistentievereiste van ACID die verbiedt dat een transactie wordt uitgevoerd totdat de eerdere transactie is voltooid en de database is geconvergeerd naar een consistente staat.
In BASE kan basisbeschikbaarheid betekenen dat je niet eens controle hebt over de databronnen. U kunt bijvoorbeeld voor een deel van uw inspanning een koppeling maken naar openbare datasets.
Relatieve use-cases
Het BASE-model is niet geschikt voor elke situatie, maar het is zeker een flexibel alternatief voor het ACID-model voor databases die geen strikte naleving van een relationeel model vereisen.
De optimale use-cases voor databases die ACID gebruiken, zijn afhankelijk van zeer gestructureerde gegevens met voorspelbare inputs en outputs. Zo profiteren personeelsdatabases, detailhandeldatabases en elektronische medische dossiers van de robuuste interne consistentiecontrole die ACID biedt.
BASE-oplossingen zijn echter beter voor vage onderwerpen zoals sentimentanalyse. Een BASE-gestructureerd project kan bijvoorbeeld een Twitter-feed scannen op zoek naar woorden die emotie impliceren op basis van een specifieke hashtag. De Twitter-feed is niet goed gestructureerd of lokaal geïnstantieerd, maar de gegevensstroom biedt de informatie die in query's is geprogrammeerd, zelfs als de reikwijdte en aard van die gegevens niet duidelijk zijn afgebakend.