Che cos'è Apache Cassandra?

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. 

Origine ed evoluzione di Apache Cassandra

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:

  • 2008: Facebook ha rilasciato il codice sorgente di Cassandra come progetto open source su Google Code
  • 2009: il progetto è stato accettato nell'Apache Incubator, segnando la sua transizione a software gestito dalla comunità
  • 2010: Cassandra è diventato un progetto di primo livello della Apache Software Foundation, consolidando la sua posizione nel settore
  • 2011: il rilascio della versione 1.0 ha segnato la maturità del progetto, con un'adozione diffusa da parte di aziende come Netflix, eBay e Twitter.
  • 2021: il rilascio della versione 4.0 ha stabilito un livello elevato di stabilità, con migliaia di correzioni di bug e test approfonditi
  • 2024-2026: le versioni moderne come la 5.0 e successive hanno aggiunto il supporto per tecnologie più recenti, come la ricerca vettoriale, l'indicizzazione collegata all'archiviazione (SAI) e una migliore sicurezza, mantenendo il database pertinente per i moderni carichi di lavoro di AI e big data

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.

A cosa serve Apache Cassandra?

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.

Come funziona l'architettura di Apache Cassandra?

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

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

Modalità di archiviazione ed elaborazione dei dati in Cassandra

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.

Domande frequenti

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.

Vantaggi di Apache Cassandra

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.

Utilizzo di servizi gestiti per ottimizzare i carichi di lavoro Cassandra

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. 

  • Automatizza la manutenzione: i servizi gestiti possono aiutare ad automatizzare questi processi, come la compattazione e le riparazioni dei nodi, garantendo che vengano eseguiti al momento giusto senza rallentare l'applicazione
  • Pianificazione della capacità e scalabilità automatica: invece di indovinare quanti server sono necessari, i servizi gestiti aiutano a monitorare il traffico, risparmiare denaro e prevenire i colli di bottiglia delle prestazioni
  • Semplifica il backup e il ripristino: la perdita di dati non è un'opzione. I servizi gestiti rendono i backup più semplici e automatizzati, così puoi ripristinare rapidamente i tuoi dati se qualcosa va storto
  • Monitoraggio proattivo: questi servizi sono dotati di dashboard integrate che rilevano segnali di problemi, come tempi di risposta lenti del disco o un utilizzo elevato della CPU, prima che si trasformino in interruzioni
  • Applicare patch e upgrade: mantenere aggiornato il software è fondamentale per la sicurezza e le prestazioni. I servizi gestiti possono aiutare a gestire questi aggiornamenti in background, spesso utilizzando upgrade in sequenza che garantiscono che il database rimanga sempre online

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.

Scelta della strategia di deployment di Cassandra corretta

Quando decidi come eseguire i tuoi carichi di lavoro Cassandra, hai tre percorsi principali. 

  • Innanzitutto, puoi autogestire Cassandra open source, il che ti dà il controllo totale sul software, ma costringe il tuo team a gestire l'infrastruttura sottostante
  • In secondo luogo, puoi scegliere un servizio gestito compatibile con Cassandra, che offre la stessa esperienza familiare senza il mal di testa delle operazioni quotidiane
  • Infine, puoi optare per un'alternativa cloud-native, come Google Cloud Bigtable o Spanner, che sono appositamente progettati per gli stessi modelli di alta affidabilità e throughput elevato, ma progettati per funzionare perfettamente con i moderni ecosistemi cloud

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.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti senza costi da spendere su Google Cloud.
Parla con un esperto delle vendite di Google Cloud per discutere della tua sfida unica in modo più dettagliato.

Esecuzione di workload Cassandra su Google Cloud con Bigtable e Spanner

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.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud