I database relazionali sono progettati con l'affidabilità e la coerenza al loro interno. Gli ingegneri che li hanno sviluppati si sono concentrati su un modello transazionale che garantisce che i quattro principi del modello ACID siano sempre preservati. Tuttavia, l'avvento di un nuovo modello di database non strutturato sta trasformando l'ACID in testa. Il modello di database NoSQL evita il modello relazionale altamente strutturato a favore di un approccio flessibile di key / value store. Questo approccio non strutturato ai dati richiede un'alternativa al modello ACID: il modello BASE.
Principi di base del modello ACID
Esistono quattro principi base del modello ACID:
- Il atomicita delle transazioni assicura che ogni transazione di database sia una singola unità che adotta un approccio "tutto o niente" all'esecuzione. Se una qualsiasi affermazione nella transazione fallisce, viene ripristinata l'intera transazione.
- I database relazionali garantiscono anche il consistenza di ogni transazione con le regole aziendali del database. Se qualsiasi elemento di una transazione atomica interrompe la coerenza del database, l'intera transazione non riesce.
- Il motore del database impone isolamento tra più transazioni che si verificano in o vicino allo stesso tempo. Ogni transazione si verifica prima o dopo ogni altra transazione e la vista del database che una transazione vede all'inizio è solo alterata dalla transazione stessa prima della sua conclusione. Nessuna transazione dovrebbe mai vedere il prodotto intermedio di un'altra transazione.
- Il principio finale di ACID, durabilità, assicura che una volta che una transazione è impegnata nel database, viene preservata in modo permanente attraverso l'uso di backup e registri delle transazioni. In caso di guasto, questi meccanismi possono essere utilizzati per ripristinare le transazioni impegnate.
Principi fondamentali di BASE
I database NoSQL, d'altra parte, abbracciano situazioni in cui il modello ACID è eccessivo o ostacolerebbe, di fatto, il funzionamento del database. Invece, NoSQL si basa su un modello più morbido conosciuto, in modo appropriato, come il modello BASE. Questo modello supporta la flessibilità offerta da NoSQL e approcci simili alla gestione e alla gestione dei dati non strutturati. BASE consiste di tre principi:
- Disponibilità di base. L'approccio al database NoSQL si concentra sulla disponibilità dei dati anche in presenza di più guasti. Ciò si ottiene utilizzando un approccio altamente distribuito alla gestione del database. Invece di mantenere un unico grande archivio di dati e concentrarsi sulla tolleranza agli errori di quel negozio, i database NoSQL diffondono i dati su molti sistemi di storage con un alto grado di replica. Nell'improbabile eventualità che un errore interrompa l'accesso a un segmento di dati, ciò non comporta necessariamente un'interruzione completa del database.
- Stato morbido. I database BASE abbandonano praticamente i requisiti di coerenza del modello ACID. Uno dei concetti alla base di BASE è che la coerenza dei dati è il problema dello sviluppatore e non dovrebbe essere gestita dal database.
- Eventuale consistenza. L'unico requisito che i database NoSQL hanno per quanto riguarda la coerenza è quello di richiedere che in futuro, i dati convergeranno in uno stato coerente. Tuttavia, non vengono fornite garanzie riguardo a quando ciò si verificherà. Questo è un allontanamento completo dal requisito di congruenza immediata di ACID che proibisce l'esecuzione di una transazione fino a quando la transazione precedente non è stata completata e il database è stato convertito in uno stato coerente.
Il modello BASE non è appropriato per ogni situazione, ma è sicuramente un'alternativa flessibile al modello ACID per i database che non richiedono una stretta aderenza a un modello relazionale.