Compliance ACID: Cosa significa e perché dovrebbe interessarti

Cos’è la conformità ACID?

La presenza di quattro componenti – atomicità, consistenza, isolamento e durabilità – può assicurare che una transazione su database sia completata in modo tempestivo. Quando i database possiedono questi componenti, si dice che sono ACID-compliant. Ma cos’è la conformità ACID, e perché dovrebbe interessarvi? Diamo un’occhiata:

Atomicità: Le transazioni del database, come gli atomi, possono essere suddivise in parti più piccole. Quando si tratta del vostro database, l’atomicità si riferisce all’integrità dell’intera transazione del database, non solo ad un suo componente. In altre parole, se una parte di una transazione non funziona come dovrebbe, l’altra fallirà come risultato e viceversa. Per esempio, se state facendo acquisti su un sito di e-commerce, dovete avere un articolo nel carrello per poterlo pagare. Quello che non puoi fare è pagare per qualcosa che non è nel tuo carrello. (Potete aggiungere qualcosa nel vostro carrello e non pagarlo, ma quella transazione sul database non sarà completa, e quindi non ‘atomica’, fino a quando non lo pagherete).

Consistenza: Affinché qualsiasi database operi come previsto, deve seguire le appropriate regole di validazione dei dati. Quindi, coerenza significa che solo i dati che seguono queste regole possono essere scritti nel database. Se si verifica una transazione e risulta in dati che non seguono le regole del database, essa verrà “riportata” ad una precedente iterazione di se stessa (o “stato”) che rispetta le regole. D’altra parte, a seguito di una transazione riuscita, nuovi dati saranno aggiunti al database e lo stato risultante sarà coerente con le regole esistenti.

Isolamento: Si può dire che in qualsiasi momento su Amazon, c’è molto più di una transazione in corso sulla piattaforma. Infatti, una quantità incredibilmente grande di transazioni di database si sta verificando simultaneamente. Per un database, l’isolamento si riferisce alla capacità di elaborare simultaneamente più transazioni in modo che una non influenzi l’altra. Quindi, immaginate che voi e il vostro vicino stiate entrambi cercando di comprare qualcosa dalla stessa piattaforma di e-commerce allo stesso tempo. Ci sono 10 articoli in vendita: il vostro vicino ne vuole cinque e voi sei. L’isolamento significa che una di queste transazioni verrebbe completata prima dell’altra. In altre parole, se il tuo vicino ha cliccato per primo, otterrà cinque articoli, e solo cinque articoli saranno rimasti in magazzino. Quindi tu potrai comprare solo cinque articoli. Se tu hai cliccato per primo, tu otterrai i sei articoli che vuoi, e loro ne avranno solo quattro. Così, l’isolamento assicura che undici articoli non vengano venduti quando ne esistono solo dieci.

Durevolezza: Tutta la tecnologia si guasta di tanto in tanto… l’obiettivo è rendere questi guasti invisibili all’utente finale. Nei database che possiedono la durabilità, i dati vengono salvati una volta che una transazione è stata completata, anche se si verifica un’interruzione di corrente o un guasto al sistema. Immaginate di comprare biglietti per concerti molto richiesti su un sito simile a Ticketmaster.com. Proprio quando i biglietti sono in vendita, sei pronto a fare un acquisto. Dopo essere rimasto bloccato nella sala d’attesa digitale per qualche tempo, sei finalmente in grado di aggiungere quei biglietti al tuo carrello. Poi fai l’acquisto e ricevi la conferma. Tuttavia, se quel database manca di durevolezza, anche dopo che il tuo acquisto di biglietti è stato confermato, se il database subisce un incidente di guasto la tua transazione andrebbe comunque persa! Come ci si potrebbe aspettare, questa è una cosa davvero brutta da accadere per un sito di e-commerce online, quindi la durabilità delle transazioni è un must-have.

ClustrixDB, un database cloud NewSQL, ora parte di MariaDB è dotato dell’ulteriore vantaggio della conformità ACID, fondamentale per il successo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *