GNU/Linux >> Linux Esercitazione >  >> Cent OS

ACID vs. BASE:confronto di modelli di transazione di database

Introduzione

Decidere sul giusto sistema di gestione del database (DBMS) può essere un compito difficile. Il numero di opzioni disponibili è enorme. Prima di iniziare a cercare una soluzione di database adeguata, considera le tue esigenze.

Un primo passaggio consigliato in questo processo è scegliere un modello di transazione del database. Si tratta di un insieme di regole che determinano il modo in cui un database organizza, archivia e manipola i dati.

In questo articolo imparerai a conoscere i due modelli di transazione di database più popolari:ACID e BASE.

ACID vs. BASE:quali sono le differenze?

Il teorema CAP afferma che è impossibile raggiungere sia la coerenza che la disponibilità in un sistema distribuito tollerante alla partizione (cioè un sistema che continua a funzionare in caso di interruzioni temporanee della comunicazione).

La differenza fondamentale tra i modelli di database ACID e BASE è il modo in cui affrontano questa limitazione.

  • Il modello ACID fornisce un sistema coerente.
  • Il modello BASE offre un'elevata disponibilità.

Per fornire ulteriori informazioni, discuteremo separatamente ciascuno dei modelli e poi li confronteremo.

Modello ACIDO

Il modello di transazione del database ACID garantisce che una transazione eseguita sia sempre coerente. Ciò lo rende adatto alle aziende che si occupano di elaborazione delle transazioni online (ad es. istituti finanziari) o di elaborazione analitica online (ad es. data warehousing). Queste organizzazioni necessitano di sistemi di database in grado di gestire molte piccole transazioni simultanee. Deve esserci tolleranza zero per gli stati non validi.

Per spiegare il modello ACID, è meglio iniziare scomponendo l'acronimo nel suo nome.

ACID sta per:

  • Atomico – Ogni transazione viene eseguita correttamente oppure il processo si interrompe e il database torna allo stato precedente all'avvio della transazione. Ciò garantisce che tutti i dati nel database siano validi.
  • Coerente – Una transazione elaborata non metterà mai in pericolo l'integrità strutturale del database.
  • Isolato – Le transazioni non possono compromettere l'integrità di altre transazioni interagendo con esse mentre sono ancora in corso.
  • Resistente – I dati relativi all'operazione conclusa persistono anche in caso di interruzioni di rete o di alimentazione. Se una transazione fallisce, non influirà sui dati manipolati.

Esempio di caso d'uso ACID

Le istituzioni finanziarie utilizzeranno quasi esclusivamente database ACID. I trasferimenti di denaro dipendono dalla natura atomica di ACID.

Una transazione interrotta che non viene immediatamente rimossa dal database può causare molti problemi. Il denaro potrebbe essere addebitato da un conto e, a causa di un errore, mai accreditato su un altro.

Quali database sono compatibili con ACID?

Un modo sicuro per assicurarsi che il database sia conforme ad ACID è scegliere un sistema di gestione del database relazionale. Questi includono MySQL, PostgreSQL, Oracle, SQLite e Microsoft SQL Server.

Alcuni DBMS NoSQL, come CouchDB di Apache o Db2 di IBM, possiedono anche un certo grado di conformità ACID. Tuttavia, la filosofia alla base dell'approccio NoSQL alla gestione dei database va contro le rigide regole ACID. Pertanto, i database NoSQL non sono la scelta consigliata per coloro che necessitano di ambienti rigidi.

Il modello BASE

L'ascesa dei database NoSQL ha fornito un modo flessibile e fluido per manipolare i dati. Di conseguenza, è stato progettato un nuovo modello di database che riflette queste proprietà.

L'acronimo BASE è leggermente più confuso di ACID. Tuttavia, le parole dietro di esso suggeriscono modi in cui il modello BASE è diverso.

BASE sta per:

  • Sostanzialmente disponibile – Invece di imporre la coerenza immediata, i database NoSQL modellati su BASE garantiranno la disponibilità dei dati diffondendoli e replicandoli tra i nodi del cluster di database.
  • Stato debole – A causa della mancanza di coerenza immediata, i valori dei dati possono cambiare nel tempo. Il modello BASE rompe con il concetto di database che impone la propria coerenza, delegando tale responsabilità agli sviluppatori.
  • Alla fine coerente – Il fatto che BASE non imponga la coerenza immediata non significa che non la raggiunga mai. Tuttavia, fino a quando non lo fa, le letture dei dati sono ancora possibili (anche se potrebbero non riflettere la realtà).

Esempio di caso d'uso BASE

Le società di marketing e assistenza clienti che si occupano di analisi del sentimento preferiranno l'elasticità di BASE quando conducono le loro ricerche sui social network. I feed dei social network non sono ben strutturati ma contengono enormi quantità di dati che un database modellato su BASE può facilmente archiviare.

Quali database utilizzano il modello BASE?

Proprio come i database SQL sono quasi uniformemente compatibili con ACID, i database NoSQL tendono a conformarsi ai principi BASE. MongoDB, Cassandra e Redis sono tra le soluzioni NoSQL più popolari, insieme ad Amazon DynamoDB e Couchbase.

ACID vs. BASE:quale ti fa bene?

Non è possibile dare una risposta diretta alla domanda su quale modello di database sia migliore. Pertanto, una decisione deve essere presa considerando tutti gli aspetti del progetto.

Data la loro natura altamente strutturata, i database conformi ad ACID si adatteranno meglio a coloro che richiedono coerenza, prevedibilità e affidabilità.

Coloro che considerano la crescita una delle loro priorità probabilmente vorranno scegliere il modello BASE, perché consente un aumento più semplice e offre maggiore flessibilità. Tuttavia, BASE richiede anche sviluppatori che sappiano come affrontare i limiti del modello.


Cent OS
  1. MyISAM vs InnoDB:un confronto

  2. Come installare wordpress su CentOS 6

  3. Domande frequenti sulla distribuzione di MySQL

  4. Modelli di ripristino del database di SQL Server

  5. Ricostruzione di un database RPM danneggiato

Che cos'è la normalizzazione del database?

10 best practice per la sicurezza del database

Che cos'è un database?

API SOAP vs REST:confronto testa a testa

Come creare un database in PostgreSQL

Come distribuire Mattermost su CentOS 7