Database grafici per principianti: ACID vs. BASE Explained
Quando si tratta di database NoSQL, i modelli di coerenza dei dati possono a volte essere sorprendentemente diversi da quelli utilizzati dai database relazionali (oltre che molto diversi da altri negozi NoSQL).
I due modelli di consistenza più comuni sono noti con gli acronimi ACID e BASE. Mentre sono spesso contrapposti l’uno contro l’altro in una battaglia per la vittoria finale (per favore qualcuno ne fa un video), entrambi i modelli di coerenza hanno vantaggi e svantaggi e nessuno dei due è sempre perfetto.
Diamo un’occhiata più da vicino ai compromessi di entrambi i modelli di coerenza del database.
In questo Database grafico per la serie di blog per principianti, ti porterò attraverso le basi della tecnologia dei grafici supponendo che tu abbia poco (o nessun) sfondo nello spazio. Nelle scorse settimane, abbiamo affrontato perché la tecnologia graph è il futuro, perché i dati connessi sono importanti, le basi (e le insidie) della modellazione dei dati, perché un linguaggio di query di database è importante, le differenze tra i linguaggi di query imperativi e dichiarativi, la modellazione predittiva utilizzando la teoria dei grafi, le basi degli algoritmi di ricerca dei grafi e
Questa settimana, daremo un’occhiata più da vicino alle differenze chiave tra i modelli di coerenza del database ACID e BASE e cosa significano i loro compromessi per le transazioni di dati.
Il modello di coerenza ACID
Molti sviluppatori hanno familiarità con le transazioni ACID dal lavoro con i database relazionali. Come tale, il modello di consistenza acida è stata la norma per qualche tempo.
La chiave ACID garanzia è che fornisce un ambiente sicuro in cui operare sui tuoi dati. L’acronimo ACID sta per:
Atomic
- Tutte le operazioni in una transazione hanno successo o ogni operazione viene ripristinata.
Coerente
- Al completamento di una transazione, il database è strutturalmente sano.
Le transazioni isolate
- non si contendono tra loro. L’accesso controverso ai dati viene moderato dal database in modo che le transazioni vengano eseguite in sequenza.
Durable
- I risultati dell’applicazione di una transazione sono permanenti, anche in presenza di guasti.
Le proprietà ACID significano che una volta completata una transazione, i suoi dati sono coerenti (gergo tecnico: consistenza di scrittura) e stabili su disco, il che può coinvolgere più posizioni di memoria distinte.
La coerenza di scrittura è una cosa meravigliosa per gli sviluppatori di applicazioni, ma richiede anche un blocco sofisticato che è in genere un modello pesante per la maggior parte dei casi d’uso.
Quando si tratta di tecnologie NoSQL, la maggior parte dei database graph(incluso Neo4j) utilizza un modello di coerenza ACID per garantire che i dati siano sicuri e archiviati in modo coerente.
Il modello di coerenza di base
Per molti domini e casi d’uso, le transazioni ACID sono molto più pessimistiche (cioè sono più preoccupate per la sicurezza dei dati) di quanto il dominio richieda effettivamente.
Nel mondo dei database NoSQL, le transazioni ACID sono meno di moda in quanto alcuni database hanno allentato i requisiti per la coerenza immediata, la freschezza e l’accuratezza dei dati al fine di ottenere altri vantaggi, come la scala e la resilienza.
(In particolare, il RavenDB basato su.NET ha contrastato la tendenza tra i negozi aggregati nel supportare le transazioni ACID.)
Ecco come si scompone l’acronimo di BASE:
Disponibilità di base
- Il database sembra funzionare la maggior parte del tempo.
Soft-state
- I negozi non devono essere coerenti in scrittura, né le repliche diverse devono essere sempre coerenti tra loro.
Consistenza finale
- I negozi mostrano coerenza in un momento successivo (ad esempio, pigramente al momento della lettura).
Le proprietà di base sono molto più sciolte delle garanzie ACID, ma non esiste una mappatura diretta uno per uno tra i due modelli di coerenza (un punto che probabilmente non può essere sopravvalutato).
Un archivio dati di base valuta la disponibilità (poiché è importante per la scala), ma non offre la coerenza garantita dei dati replicati in fase di scrittura. Nel complesso, il modello di coerenza di base fornisce una garanzia meno rigorosa di ACID: i dati saranno coerenti in futuro, sia in fase di lettura (ad esempio, Riak) o sarà sempre coerente, ma solo per alcune istantanee passate elaborate (ad esempio, Datomic).
Il modello di coerenza di base viene utilizzato principalmente dagli archivi aggregati, inclusi gli archivi di famiglia di colonne, valore chiave e documenti.
Navigazione ACIDO vs. Compromessi DI BASE
Non esiste una risposta corretta al fatto che la tua applicazione abbia bisogno di un modello di coerenza ACIDO rispetto a quello di base. Gli sviluppatori e gli architetti di dati dovrebbero selezionare i loro compromessi di coerenza dei dati caso per caso, non basandosi solo su ciò che è di tendenza o su quale modello è stato utilizzato in precedenza.
Data la consistenza sciolta di BASE, gli sviluppatori devono essere più informati e rigorosi sui dati coerenti se scelgono un archivio di BASE per la loro applicazione. È essenziale avere familiarità con il comportamento di BASE del tuo negozio aggregato scelto e lavorare all’interno di tali vincoli.
D’altra parte, la pianificazione attorno alle limitazioni di BASE può a volte essere uno svantaggio principale rispetto alla semplicità delle transazioni ACID. Un database completamente ACIDO è la soluzione perfetta per i casi d’uso in cui l’affidabilità e la coerenza dei dati sono essenziali (bancario, chiunque?).
Nelle prossime settimane ci immergeremo in più ACIDO/specifiche di base quando si tratta di negozi aggregati e altre tecnologie grafico.
Ottieni la tua copia del libro O’Reilly Graph Databases e inizia a utilizzare la tecnologia graph per risolvere problemi del mondo reale.
prendi il Libro
Prendere con il resto del Grafico Database per i Principianti della serie:
- Grafico Perché la Tecnologia È il Futuro
- Perché i Dati Connesse Questioni
- Le Basi della Modellazione dei Dati
- la Modellazione dei Dati Insidie da Evitare
- Perché una Query di Database Questioni Linguistiche (Più Di quanto Si Pensi)
- Imperativo vs Dichiarativa Linguaggi di interrogazione: che Cosa è la Differenza?
- Graph Theory&Modellazione predittiva
- Graph Search Algorithm Basics
- Perché abbiamo bisogno di database NoSQL
- Un tour di negozi aggregati
- Altre tecnologie di dati del grafico
- Tecnologia nativa contro non nativa del grafico