Cos'è Apache Cassandra?

Finestre illuminate su un grande edificio con scene distinte in ogni piazza

Autori

Tom Krantz

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

Cos'è Apache Cassandra?

Apache Cassandra (Cassandra) è un database NoSQL open source progettato per gestire grandi quantità di dati in più data center.

 

Progettato come sistema di gestione di database distribuito (DBMS), Cassandra si basa su un'architettura peer-to-peer. Ogni nodo o singolo server che memorizza parte dei dati, in un cluster Cassandra è uguale, senza fare affidamento su un nodo master.

I dati vengono suddivisi tra peer anziché essere memorizzati in una posizione centrale, eliminando un singolo punto di errore (dove un malfunzionamento si trasforma rapidamente in più malfunzionamenti). Questa progettazione consente di ottenere una replica perfetta, una distribuzione efficiente dei dati e un servizio continuo, anche durante i tempi di inattività pianificati o le modifiche improvvise. 

Cassandra offre automazionebackup dei dati e metriche integrate per caso d'uso, come la gestione di dispositivi Internet of Things (IoT) connessi. In particolare, offre scalabilità lineare, elevata disponibilità e tolleranza agli errori, il che la rende una scelta popolare per le applicazioni di big data e i workload in tempo reale. A settembre 2024, Cassandra era utilizzato da più di 30.000 organizzazioni in tutto il mondo.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

La storia di Cassandra

La storia di Cassandra è iniziata nel 2007 su Facebook, quando gli ingegneri cercavano un sistema in grado di memorizzare dati per la piattaforma di messaggistica in espansione dell'azienda. Combinando modelli di database NoSQL consolidati (Dynamo di Amazon e Bigtable di Google), hanno creato un sistema con strutture di dati efficienti ed eventual consistency, in cui gli aggiornamenti si propagano fino a quando tutte le repliche non corrispondono nel tempo.

Nel 2008, Cassandra è stato rilasciato come progetto open source, guadagnando rapidamente popolarità tra gli sviluppatori alla ricerca di un'alternativa ai database relazionali tradizionali. La Apache Software Foundation ne ha assunto la gestione nel 2009, formalizzando la sua governance e accelerando l'adozione da parte della community.

La popolarità di Cassandra è cresciuta quando i primi utenti come eBay, Spotify e Instagram lo hanno implementato per gestire i big data. L'ascesa dell'IoT e della personalizzazione in tempo reale hanno ulteriormente consolidato il ruolo di Cassandra come database di riferimento per scalabilità e disponibilità.

Il supporto commerciale di DataStax ha aggiunto strumenti, tutorial e servizi di livello aziendale, mentre la community aperta ha sviluppato strumenti e ha ampliato la documentazione. Cassandra rimane ancora al centro di molti sistemi distribuiti, prosperando sia nell'ecosistema open source che nelle implementazioni aziendali.

AI Academy

È la gestione dei dati il segreto dell’AI generativa?

Scopri perché i dati di alta qualità sono fondamentali per un uso efficace dell'AI generativa.

Perché Cassandra è importante?

Dai servizi di streaming e social media agli acquisti online, i clienti si aspettano esperienze digitali sempre disponibili. Per le aziende, il tempo di attività non è più un obiettivo dell'IT, bensì una metrica aziendale. Il costo dell'inadeguatezza è elevato: le principali aziende mondiali perdono circa 400 miliardi di dollari l'anno a causa dei tempi di inattività non pianificati.

Allo stesso tempo, un'ondata di dati non strutturati provenienti da log degli eventi, telemetria e flussi di dati sta rendendo le operazioni più complesse tra regioni e ambienti cloud, aumentando la probabilità di guasti del sistema. Le organizzazioni necessitano di un database affidabile, in grado di gestire diversi tipi di dati e di scalare in base alla domanda su più infrastrutture globali. Cassandra è progettato per soddisfare queste esigenze.

Vari settori si affidano alle elevate prestazioni di Cassandra per elaborare miliardi di operazioni di scrittura (inserimento, aggiornamento ed eliminazione) servendo gli utenti con precisione e in tempo reale. La sua resilienza deriva dalla replica dei dati su server di largo consumo o su macchine standard pronte all'uso, riducendo al minimo il rischio di interruzioni e garantendone la durata anche in caso di guasti dell'hardware.

La capacità di Cassandra di gestire workload in più data center offre coerenza e disponibilità alle aziende di tutto il mondo. Organizzazioni come Netflix e Amazon utilizzano Cassandra per offrire esperienze personalizzate, proteggendo al contempo dai tempi di inattività e dalla perdita di dati. Ad esempio, il team Asset Management Platform di Netflix utilizza Cassandra per gestire circa 1,9 miliardi di annotazioni (circa 2,6 TB), dopo avere raddoppiato il cluster da 12 a 24 nodi.

Cassandra e database relazionali tradizionali a confronto

A differenza dei database relazionali, che si basano su rigide definizioni di schemi e controllo centralizzato, Cassandra è progettato per la scalabilità distribuita. Nei sistemi relazionali, una chiave primaria è legata a una rigida modellazione dei dati e a una scalabilità limitata. Cassandra, al contrario, utilizza una chiave di partizione e un fattore di replica per determinare come i set di dati vengono memorizzati nei nodi e nei data center.

Sebbene i sistemi Structured Query Language (SQL) siano eccellenti per gestire join e aggregati complessi, spesso introducono colli di bottiglia e il rischio di un singolo punto di errore. Cassandra evita questo adottando l'architettura distribuita e l'eventual consistency. Rispetto a MongoDB, il database Cassandra preferisce i workload a elevata scrittura e linearmente scalabili su più data center.

Alle organizzazioni che gestiscono grandi quantità di dati, Cassandra offre chiari vantaggi: elevata produttività, bassa latenza e tolleranza alle interruzioni. Tuttavia, Cassandra non fornisce lo stesso livello di query ad hoc offerto da alcuni database relazionali. Gli sviluppatori che utilizzano Cassandra dovrebbero progettare attentamente strategie di data modeling per ottimizzare le operazioni di scrittura, le repliche e l'integrità dei dati.

Caratteristiche principali di Cassandra

Cassandra combina alcune innovazioni dei sistemi distribuiti con strumenti per la gestione dei dati di livello aziendale. Alcune delle caratteristiche principali sono:

  • Open source
  • Prestazioni elevate
  • Disponibilità regolabile
  • Scalabilità lineare
  • Replica ottimale
  • Interfaccia familiare

Open source

Cassandra è open source ai sensi della Apache Software Foundation, che aiuta le organizzazioni a evitare il blocco da fornitore e a personalizzare il database in base alle proprie esigenze. Quando è necessario un aiuto di livello aziendale, i team possono utilizzare le risorse della community o scegliere il supporto commerciale e i servizi gestiti.

Prestazioni elevate

Il motore di storage di Cassandra utilizza un flusso step-by-step (o percorso di scrittura) composto da un log di commit, una tabella di memoria (memtable) e file di tabelle di stringhe ordinate (SSTable). Questo flusso accetta rapidamente le operazioni di scrittura e le protegge. I dati a cui si accede di frequente vengono conservati nella cache per le query a bassa latenza, mentre la compattazione, ovvero una funzione di pulizia automatica, aiuta a garantire un'efficiente archiviazione dei dati a lungo termine.

Disponibilità regolabile

Secondo il teorema CAP, quando si verifica una partizione di rete, un sistema distribuito può fornire solo due delle tre caratteristiche desiderate: coerenza, disponibilità e tolleranza alla partizione. Cassandra gestisce questo compromesso attraverso livelli di coerenza regolabili, che consentono agli utenti di dare priorità alla disponibilità o alla coerenza a seconda del caso d'uso.

Scalabilità lineare

Cassandra aumenta la capacità aggiungendo nuovi nodi senza interruzioni del servizio e offrendo scalabilità lineare su server di largo consumo anziché costosi aggiornamenti verticali. Via via che i nodi vengono aggiunti, Cassandra ridistribuisce automaticamente i dati e il traffico nel cluster, in modo che i workload scalino e il throughput aumenti proporzionalmente.

Replica ottimale

Cassandra replica i dati su nodi e data center in modo che gli utenti locali abbiano una bassa latenza, evitando un singolo punto di errore. Si integra inoltre con Kubernetes, framework di application programming interface (API) e ambienti Amazon Web Services (AWS). È scritto in Java e funziona sulla Java Virtual Machine (JVM).

Interfaccia familiare

I team utilizzano il Cassandra Query Language (CQL), che somiglia a SQL, per definire rapidamente i costrutti delle chiavi, come keyspace, tabelle e chiavi primarie. Strumenti interattivi come la shell CQL (cqlsh) e i tutorial ufficiali possono anche aiutare a ridurre i tempi di onboarding dei nuovi sviluppatori.

Informazioni sul Cassandra Query Language

Cassandra interagisce con le applicazioni tramite CQL, un linguaggio specifico del dominio ispirato a SQL. La sintassi CQL è familiare agli sviluppatori di database e consente loro di definire keyspace, schema, tipi di dati e chiavi primarie e di partizione.

Ad esempio, durante il lancio globale di un gioco, uno sviluppatore può creare un keyspace, ovvero l'equivalente del database di primo livello di Cassandra, che definisce le impostazioni di replica. Dopodiché, può progettare tabelle in cui la chiave di partizione (come l'ID giocatore o la regione) mantiene i dati correlati sugli stessi nodi per una distribuzione efficiente dei dati. Usando cqlsh, il team potrebbe eseguire tutorial, convalidare le query e gestire il cluster Cassandra via via che si aggiungono nuovi nodi per gestire l'aumento del volume di giocatori.

Poiché Cassandra enfatizza le operazioni di scrittura e la velocità effettiva, la sua sintassi evita funzionalità che rallenterebbero le prestazioni, come i join complessi. Gli sviluppatori si affidano invece a indici secondari, aggregati e data modeling per ottenere flessibilità.

CQL e SQL a confronto

Sebbene CQL sia simile a SQL, i due linguaggi riflettono approcci diversi alla gestione dei dati.

Strutture di dati

SQL opera su tabelle normalizzate, mentre CQL è progettato per i dati Cassandra denormalizzati, allineati con le chiavi di partizione.

Consistenza

SQL presuppone una rigorosa integrità dei dati, mentre Cassandra bilancia l'eventual consistency con livelli di coerenza configurabili.

Scalabilità

I sistemi SQL si basano tipicamente sulla scalabilità verticale, mentre Cassandra consente una scalabilità lineare, aggiungendo nuovi nodi a un cluster Cassandra.

Operazioni

SQL è ottimizzato per le transazioni, mentre CQL è progettato per le query in tempo reale e le operazioni di scrittura con volumi elevati.

Gli sviluppatori che passano da SQL possono adattarsi rapidamente alla sintassi di CQL, ma devono ripensare le strategie di data modeling per utilizzare l'approccio ai sistemi distribuiti di Cassandra.

Casi d'uso di Cassandra

Cassandra alimenta workload mission-critical in settori che richiedono alte prestazioni, bassa latenza e resilienza. Ecco alcuni esempi:

  • E-commerce: i rivenditori utilizzano Cassandra per memorizzare i dati sui carrelli della spesa, personalizzare i consigli ed elaborare i pagamenti con tolleranza agli errori.
  • IoT: Cassandra gestisce flussi di sensori e set di dati provenienti da milioni di dispositivi, garantendo insight in tempo reale e duraturi.
  • Implementazioni cloud: Cassandra si integra con AWS e con altri servizi cloud. Può anche essere orchestrato su Kubernetes per gli ambienti containerizzati.
  • Streaming e intrattenimento: i servizi di streaming utilizzano Cassandra per gestire l'attività globale degli utenti, offrendo esperienze personalizzate senza rischiare tempi di inattività.

Oltre a questi settori verticali, Cassandra supporta le organizzazioni nella creazione di sistemi distribuiti per big data e data storage scalabile. Con una combinazione di supporto API, strumenti aziendali e tutorial aperti alla community, Cassandra rimane una pietra miliare per i moderni sistemi di gestione dei database.

Soluzioni correlate
IBM StreamSets

Crea e gestisci pipeline di dati intelligenti in streaming attraverso un'interfaccia grafica intuitiva, che facilita la perfetta integrazione dei dati in ambienti ibridi e multicloud.

Esplora StreamSets
IBM watsonx.data™

Watsonx.data ti consente di scalare analytics e AI con tutti i tuoi dati, ovunque risiedano, attraverso uno storage dei dati aperto, ibrido e governato.

Scopri watsonx.data
Servizi di consulenza per dati e analytics

Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.

Esplora i servizi di analytics
Fai il passo successivo

Progetta una strategia dati che elimini i silo, riduca la complessità e migliori la qualità dei dati per esperienze eccezionali di clienti e dipendenti.

Esplora le soluzioni di gestione dei dati Scopri watsonx.data

Apache Cassandra e Cassandra sono marchi registrati di The Apache Software Foundation.