Per anni, la scelta è stata tra la robustezza e le garanzie ACID dei database relazionali (SQL) e la scalabilità orizzontale dei database NoSQL. I database NewSQL sono una nuova categoria di sistemi che cercano di offrire il meglio di entrambi i mondi.
L'Obiettivo di NewSQL
L'obiettivo di un database NewSQL è fornire sia la scalabilità orizzontale tipica dei sistemi NoSQL, sia le garanzie transazionali ACID tipiche dei sistemi relazionali tradizionali.
Sono database relazionali, parlano SQL, ma sono stati riprogettati da zero per essere distribuiti, ovvero per funzionare su un cluster di più server.
Come Funzionano?
Le architetture possono variare, ma molte si basano su alcuni principi comuni:
- Sharding Automatico: A differenza dei database SQL tradizionali, dove lo sharding è un processo complesso, i database NewSQL gestiscono il partizionamento e il ribilanciamento dei dati in modo automatico.
- Consenso Distribuito: Per garantire la consistenza tra i nodi del cluster, usano algoritmi di consenso come Paxos o Raft.
- Architettura Cloud-Native: Sono progettati per funzionare su infrastrutture cloud, sfruttando la possibilità di aggiungere e rimuovere nodi dinamicamente.
Esempi di Database NewSQL
CockroachDB
È uno dei più famosi. È un database SQL distribuito che è altamente resiliente e offre transazioni ACID serializzabili. È compatibile con il wire protocol di PostgreSQL, quindi puoi usare i driver e gli strumenti di Postgres per interagire con esso.
TiDB
Un altro database SQL distribuito, open-source, che è compatibile con il protocollo MySQL. È progettato per carichi di lavoro HTAP (Hybrid Transactional/Analytical Processing), cioè per gestire sia le transazioni online che le query analitiche complesse sullo stesso database.
Google Spanner (e la sua versione open-source, YugabyteDB)
Spanner è il database NewSQL globale di Google, famoso per la sua consistenza esterna e l'uso di orologi atomici. YugabyteDB è un'alternativa open-source ispirata a Spanner.
Quando Usare NewSQL?
I database NewSQL sono la scelta ideale per applicazioni che:
- Richiedono sia la consistenza transazionale forte di SQL, sia la scalabilità orizzontale di NoSQL.
- Devono essere distribuite globalmente per servire utenti in tutto il mondo con bassa latenza.
- Hanno bisogno di un'altissima disponibilità e resilienza ai guasti.
Hai bisogno di una soluzione su misura?
Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.
Richiedi una consulenza