
La prossima versione di Apache Cassandra, il database NoSQL super scalabile supportato da DataStax, otterrà il supporto per le transazioni ACID, aprendolo così a casi d’uso più impegnativi. Il metodo che consentirà le transazioni è un nuovo protocollo di transazione distribuito denominato Accord.
ACID si riferisce alla capacità di un sistema informatico di mantenere quattro attributi durante l’elaborazione delle transazioni, tra cui atomicità, coerenza, isolamento e durabilità. Per alcuni tipi di applicazioni, come le applicazioni bancarie, il supporto ACID fornisce la migliore garanzia che le transazioni siano a prova di proiettile e vengano elaborate come previsto, anche in caso di guasti alla rete e al computer.
I tradizionali sistemi di gestione dei database relazionali (RDBMS) come Oracle, Postgres e SQL Server offrono da tempo il supporto completo delle transazioni ACID come funzionalità principale. Le banche e altre organizzazioni che richiedevano il massimo livello di integrità per le loro transazioni hanno costruito le loro applicazioni su RDBMS, che è stato il modello standard per l’informatica aziendale negli ultimi 40 e più anni.
Tuttavia, spinti dalla relativa rigidità dei database relazionali, molti sviluppatori negli ultimi 15 anni sono passati a una nuova classe di database, raggruppati in modo approssimativo nella categoria NoSQL. Questi sistemi, come Apache Cassandra e MongoDB, offrono funzionalità come la flessibilità dello schema e la scalabilità distribuita desiderate dagli sviluppatori, ma in genere hanno il costo del supporto ACID completo.
Ora molti di questi popolari database NoSQL (così come alcuni nuovi database SQL distribuiti) stanno cercando di fornire supporto per le transazioni ACID ma senza compromettere le funzionalità che li hanno resi popolari alternative ai tradizionali RDBMS in primo luogo.
Sono stati utilizzati diversi metodi per raggiungere un consenso tra i nodi in un cluster distribuito. Paxos è il nome di uno dei primi protocolli di consenso, che aiuta a coordinare un consenso tra i vari nodi in un database per determinare quale dovrebbe essere il valore. Google Cloud Spanner utilizza Paxos insieme agli orologi atomici per fornire un database distribuito coerente a livello globale. Dal 2013, Apache Cassandra utilizza il protocollo di consenso Paxos, ma consente solo una forma di transazioni “leggere” (poiché non funziona a livello di “tabella” del database).
MongoDB ha fornito il pieno supporto ACID oltre quattro anni fa utilizzando una versione del protocollo di consenso Raft, che era un seguito di Paxos. Anche CockroachDB, un database relazionale scalabile, utilizza Raft, così come YugaByte, un altro nuovo database SQL, e Neo4j, un database grafico. Altri database hanno adottato l’algoritmo di consenso Calvin, tra cui FaunaDB, un database NoSQL creato da ex ingegneri di Twitter, e FoundationDB, un database NoSQL acquisito da Apple nel 2015 e successivamente open source nel 2018.
Mentre alcuni database stanno ottenendo trazione dai protocolli di consenso Raft e Calvin, il loro uso di un unico leader eletto e la necessità di più viaggi di andata e ritorno tra i nodi in un cluster introdurrebbe limitazioni inaccettabili all’architettura del nulla condiviso di Cassandra, afferma Patrick McFadin, vicepresidente delle relazioni con gli sviluppatori e capo evangelista di Cassandra presso DataStax.
“Cassandra presume che i guasti facciano parte dell’esecuzione di un grande sistema distribuito. Uno o più nodi che vanno offline non dovrebbero causare un rapido degrado delle prestazioni o problemi di disponibilità”, scrive McFadin in una storia recente che annuncia il supporto ACID per Cassandra in La nuova pila. “I nostri criteri consistono nel rimanere fedeli alle convinzioni fondamentali su come dovrebbero funzionare i sistemi distribuiti. Le prestazioni e la scalabilità devono sempre essere preservate durante il funzionamento di più nodi su uno o più data center”.
Tuttavia, con il protocollo Accord creato dai ricercatori di Apple e dell’Università del Michigan, i dipendenti di DataStax pensano di aver trovato un modo per Cassandra di fornire supporto per le transazioni ACID complete pur mantenendo i suoi standard di prestazioni e scalabilità.
Secondo McFadin, Accord affronta due problemi che Raft e Calvin non sono stati in grado di risolvere, incluso “come possiamo avere un consenso disponibile a livello globale e raggiungerlo in un viaggio di andata e ritorno?”
Il primo nuovo meccanismo, dice, è il buffer di riordino, che misura la differenza tra i nodi oltre alla latenza tra di loro. “Ogni replica può utilizzare queste informazioni per ordinare correttamente i dati da ciascun nodo e tenere conto delle differenze, garantendo un consenso di andata e ritorno con un protocollo di timestamp”, scrive McFadin.
Il secondo meccanismo è l’elettorato accelerato. “Le modalità di errore possono creare latenza quando si elegge un nuovo leader prima di riprendere”, scrive DataStax VP. “Gli elettorati del percorso rapido utilizzano funzionalità preesistenti in Cassandra con alcune nuove implementazioni per mantenere un percorso veloce senza leader verso il quorum con lo stesso livello di fallimento tollerato da Cassandra”.
Un recente white paper su Accord descrive il protocollo in modo più dettagliato. Il white paper, che è stato scritto da tre ricercatori Apple, tra cui Benedict Elliot Smith, Blake Eggleston e Scott Andreas, e un ricercatore dell’Università del Michigan, Tony Zhang, è disponibile qui.
“Rispetto ai sistemi precedenti che realizzano transazioni multi-shard serializzabili rigorose, Accord ottiene prestazioni ottimali utilizzando timestamp in tempo reale e un buffer di riordino dei messaggi”, scrivono i ricercatori. “A differenza di Tempo [another recently proposed consensus protocol]Accord non si basa su meccanismi di trasmissione periodica aggiuntivi per la stabilità del timestamp e i comandi commutativi non interferiscono.
“È importante sottolineare che Accord affronta la scarsa stabilità del percorso rapido dei sistemi esistenti introducendo un elettorato del percorso rapido configurabile. Ciò fornisce una tolleranza ai guasti ottimale e prestazioni costanti in qualsiasi numero di guasti tollerati. Accord è il primo protocollo senza leader sufficientemente stabile per l’uso pratico in un sistema di database industriale su larga scala. Infine, per quanto ne sappiamo, nessun sistema di database commerciale o open source offre transazioni serializzabili rigorose tra le regioni in un’unica area di andata e ritorno.
Il lavoro per integrare Accord in Cassandra è ancora in corso, secondo McFadin. Ma gli utenti di Cassandra possono aspettarsi che il lavoro venga svolto dalla prossima major release di Cassandra, che sarà la prima a supportare le transazioni complete, dice.
Articoli correlati:
AWS al lavoro per scalare le scritture Aurora DB a livello globale, come Spanner
Cockroach Labs pronto per la prima serata con il database scale-out
FaunaDB ha violato il codice per la transazionalità globale?
Accord, acido, transazioni ACID, apache cassandra, Calvin, protocollo di consenso, database, NoSQL, Patrick McFadin, Paxos, Raft, transazioni