Ultimo aggiornamento: 24/07/2026
Apache Cassandra è un database NoSQL distribuito e open source progettato per gestire volumi elevati di dati su più server. La sua architettura decentralizzata elimina i singoli punti di errore, rendendola una scelta affidabile per carichi di lavoro ad alta disponibilità e con molte scritture che devono rimanere online indipendentemente dalle interruzioni dei nodi o dei data center.
Gli ingegneri di Facebook (ora Meta), Avinash Lakshman e Prashant Malik, hanno creato Cassandra per potenziare la ricerca nella posta in arrivo di Facebook. Avevano bisogno di un sistema in grado di archiviare ed eseguire ricerche in set di dati di grandi dimensioni su più server senza rallentare.
Per realizzarlo, il team si è ispirato ad altri due modelli di database consolidati: ha combinato il modello di archiviazione a colonne larghe del documento Bigtable di Google del 2006 con l'architettura ad anello distribuita di Dynamo di Amazon. Il progetto prende il nome dalla profetessa mitologica troiana, un riferimento alla "maledizione" di fare previsioni a cui gli altri non credevano.
Il progetto si è evoluto rapidamente man mano che il suo potenziale è diventato chiaro alla più ampia comunità di ingegneri:
Grazie alla sua eredità, molte aziende si affidano a questo sistema per alimentare i propri sistemi. Sebbene Cassandra rimanga una scelta comprovata per i sistemi ad alta disponibilità, la valutazione dei compromessi di progettazione aiuta i team a decidere se l'autogestione di un'architettura legacy si adatti alle esigenze delle applicazioni moderne.
Cassandra viene spesso utilizzato per lavori che comportano un flusso costante di dati, come informazioni provenienti da sensori intelligenti (IoT), logging delle applicazioni e pipeline di monitoraggio. È anche ampiamente utilizzato per il monitoraggio degli eventi e i sistemi di suggerimento, dove il salvataggio e l'esecuzione di query sui dati in modo rapido e su larga scala sono fondamentali.
I sistemi che non possono permettersi tempi di inattività utilizzano Cassandra perché la sua replica multi-data center e le scritture asincrone consentono a un intero data center di andare offline senza interrompere il servizio o perdere dati. Molte aziende globali si affidano a questo per mantenere le loro app in esecuzione 24 ore su 24, 7 giorni su 7 in diverse regioni.
Cassandra utilizza una progettazione peer-to-peer in cui ogni nodo è identico. Questi nodi sono configurati in un anello decentralizzato e utilizzano un metodo chiamato hashing coerente per distribuire uniformemente i dati, prevenire i colli di bottiglia e garantire che non ci siano single point of failure. Puoi anche scegliere il livello di rigore del database quando verifica se una lettura o una scrittura ha esito positivo, il che ti consente di decidere tra velocità e disponibilità dei dati più aggiornati in base alle esigenze specifiche dell'applicazione.
Il database utilizza un modello chiamato archivio a colonne larghe, che consente di organizzare i dati in spazi di chiavi, righe e colonne dinamiche in modo simile a un normale foglio di lavoro, ma con maggiore flessibilità. In questo modo puoi progettare i dati in modo che siano facili da modificare man mano che la tua app cresce.
Funzionalità | Apache Cassandra | RDBMS tradizionale |
Modello dei dati | Denormalizzato | Normalizzato |
Flessibilità dello schema | Può cambiare durante l'esecuzione | Richiede tempo di inattività |
Struttura dell'indice | Albero di unione strutturato in base al log | B-tree |
Ottimizzazione della scrittura | Principale | Secondario |
Posizionamento CAP (coerenza, disponibilità, tolleranza di partizione) | AP (disponibile e tollerante alle partizioni) | CA (coerenza e disponibilità) |
Funzionalità di query | CQL (no JOIN) | SQL completo con JOIN |
Modello dei dati
Denormalizzato
Normalizzato
Flessibilità dello schema
Può cambiare durante l'esecuzione
Richiede tempo di inattività
Struttura dell'indice
Albero di unione strutturato in base al log
B-tree
Ottimizzazione della scrittura
Principale
Secondario
Posizionamento CAP (coerenza, disponibilità, tolleranza di partizione)
AP (disponibile e tollerante alle partizioni)
CA (coerenza e disponibilità)
Funzionalità di query
CQL (no JOIN)
SQL completo con JOIN
Il motore di archiviazione Cassandra si basa su un albero LSM (Log-Structured Merge) per gestire i dati. Le scritture in entrata vengono scritte in un log di commit per la durabilità e conservate in memoria tramite una Memtable. Quando sono piene, le Memtable vengono scaricate su disco come Sorted String Table (SSTable) immutabili.
Questo design di sola aggiunta è il motivo per cui Cassandra eccelle nel throughput con un numero elevato di scritture. Evitando gli aggiornamenti sul posto, il sistema può elaborare i dati in entrata molto più velocemente rispetto ai sistemi tradizionali che si basano su I/O casuali su disco.
Ecco le risposte ad alcune domande frequenti su Cassandra.
È un database distribuito utilizzato per le app che devono rimanere online in ogni momento e gestire molte scritture di dati, come i log di flussi o i dati dei sensori.
Cassandra è un database NoSQL. Utilizza un linguaggio chiamato CQL che assomiglia a SQL, ma non supporta tutte le stesse funzionalità, come join complessi o sicurezza delle transazioni approfondita.
Kafka serve per spostare i dati in tempo reale, mentre Cassandra serve per archiviarli in modo sicuro. Spesso vengono utilizzati insieme in un unico sistema.
Cassandra è la soluzione migliore per scrivere grandi quantità di dati su larga scala. MongoDB è un database di documenti che spesso è più adatto se devi eseguire ricerche in diversi tipi di dati con strutture flessibili.
Cassandra è pensato per l'elaborazione delle transazioni online (OLTP), il che significa che è adatto alla gestione di letture e scritture semplici e ad alta velocità. Non è progettato per attività analitiche complesse come l'esecuzione di report di grandi dimensioni o la scansione di tutti i dati contemporaneamente.
Scalabilità
Puoi aggiungere altri nodi per gestire più lavoro e non devi spegnere il sistema per farlo.
Nessun single point of failure
Poiché tutti i nodi sono uguali, il sistema è molto stabile.
Copia automatica dei dati
Il sistema salva automaticamente i tuoi dati in più posizioni.
Scritture rapide
La progettazione dello spazio di archiviazione è realizzata per gestire un gran numero di scritture contemporaneamente.
Coerenza regolabile
Puoi controllare il livello di rigore dei tuoi dati in base alle singole query. Scegli "Tutti" i nodi per una precisione perfetta o "Uno" per la massima velocità possibile.
Nessun vincolo al fornitore
Poiché viene eseguito su hardware standard, non sei vincolato a provider cloud specifici. Puoi spostare i tuoi dati tra configurazioni on-premise e cloud diversi, se necessario.
L'esecuzione del tuo sistema Cassandra richiede un overhead elevato. Devi pianificare lo spazio necessario, configurare i server, gestire le riparazioni, assicurarti di avere i backup ed eseguire gli aggiornamenti mentre il sistema è in esecuzione.
I servizi gestiti cambiano questa situazione occupandosi del lavoro più pesante per te.
Spostando queste attività operative su una piattaforma gestita, il tuo team può smettere di preoccuparsi della gestione del database e concentrarsi sull'aggiunta di valore per i tuoi utenti.
Quando decidi come eseguire i tuoi carichi di lavoro Cassandra, hai tre percorsi principali.
La scelta del percorso giusto dipende dal bilanciamento delle competenze del tuo team con le esigenze specifiche della tua attività. Usa questo elenco di controllo per guidare il tuo processo decisionale:
Domanda | Se sì… | If no… |
Abbiamo il tempo di correggere e ottimizzare il database? | Puoi gestire i cluster autogestiti se hai ingegneri dedicati alla "gestione dei database". | Scegli un servizio gestito per evitare di sprecare tempo di progettazione nella manutenzione dell'infrastruttura. |
"Rimanere online" è più importante della coerenza perfetta? | Il modello AP di Cassandra è perfetto per le app a disponibilità elevata. | Prendi in considerazione Cloud Spanner, che offre la scalabilità di un sistema distribuito con una rigorosa sicurezza dei dati. |
Dobbiamo fare lo scale up rapidamente man mano che cresciamo? | Utilizza i servizi gestiti o Bigtable, che offrono la scalabilità automatica per gestire i picchi di traffico. | Un cluster statico potrebbe funzionare, ma rischi colli di bottiglia delle prestazioni durante i periodi di maggiore attività. |
Un servizio gestito renderebbe il nostro lavoro più affidabile? | Assolutamente sì. I servizi gestiti automatizzano i backup e l'applicazione di patch per prevenire gli errori umani. | Accetti il rischio maggiore di manutenzione manuale e potenziali errori di configurazione. |
Puntiamo alla portabilità dell'infrastruttura? | La gestione autonoma offre la massima libertà di spostamento tra cloud o di esecuzione on-premise. | Ti senti a tuo agio con i vantaggi specifici del cloud in cambio di un minore sforzo operativo. |
Domanda
Se sì…
If no…
Abbiamo il tempo di correggere e ottimizzare il database?
Puoi gestire i cluster autogestiti se hai ingegneri dedicati alla "gestione dei database".
Scegli un servizio gestito per evitare di sprecare tempo di progettazione nella manutenzione dell'infrastruttura.
"Rimanere online" è più importante della coerenza perfetta?
Il modello AP di Cassandra è perfetto per le app a disponibilità elevata.
Prendi in considerazione Cloud Spanner, che offre la scalabilità di un sistema distribuito con una rigorosa sicurezza dei dati.
Dobbiamo fare lo scale up rapidamente man mano che cresciamo?
Utilizza i servizi gestiti o Bigtable, che offrono la scalabilità automatica per gestire i picchi di traffico.
Un cluster statico potrebbe funzionare, ma rischi colli di bottiglia delle prestazioni durante i periodi di maggiore attività.
Un servizio gestito renderebbe il nostro lavoro più affidabile?
Assolutamente sì. I servizi gestiti automatizzano i backup e l'applicazione di patch per prevenire gli errori umani.
Accetti il rischio maggiore di manutenzione manuale e potenziali errori di configurazione.
Puntiamo alla portabilità dell'infrastruttura?
La gestione autonoma offre la massima libertà di spostamento tra cloud o di esecuzione on-premise.
Ti senti a tuo agio con i vantaggi specifici del cloud in cambio di un minore sforzo operativo.
Se vuoi evitare di gestire Cassandra in autonomia, Google Cloud offre due soluzioni utili: Bigtable e Spanner.
Se già utilizzi Cassandra per l'archiviazione a colonne larghe e l'elevata velocità effettiva di scrittura, Bigtable potrebbe essere la soluzione ideale. Per utilizzarlo, puoi mappare i keyspace e le tabelle Cassandra esistenti alle tabelle Bigtable, quindi aggiornare il codice dell'applicazione per utilizzare le librerie client di Cloud Bigtable. Poiché è completamente gestito, Bigtable gestisce automaticamente lo sharding e il bilanciamento del carico che in precedenza dovevi ottimizzare manualmente in Cassandra.
Se il tuo carico di lavoro Cassandra è cresciuto al punto da richiedere una maggiore coerenza o se hai bisogno di funzionalità relazionali di SQL, anche Spanner potrebbe essere una buona scelta. Per utilizzarlo, devi definire lo schema utilizzando SQL standard, il che potrebbe richiedere la normalizzazione di alcuni dei dati Cassandra denormalizzati. Offre la stessa scalabilità orizzontale di Cassandra, ma aggiunge il vantaggio di una coerenza globale forte e del supporto SQL relazionale completo.
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.