Cassandra - Introduzione
Apache Cassandra è un database distribuito altamente scalabile e ad alte prestazioni progettato per gestire grandi quantità di dati su molti server commodity, fornendo un'elevata disponibilità senza un singolo punto di errore. È un tipo di database NoSQL. Cerchiamo prima di capire cosa fa un database NoSQL.
NoSQLDatabase
Un database NoSQL (a volte chiamato non solo SQL) è un database che fornisce un meccanismo per archiviare e recuperare dati diversi dalle relazioni tabulari utilizzate nei database relazionali. Questi database sono privi di schemi, supportano una facile replica, hanno API semplici, eventualmente coerenti e possono gestire enormi quantità di dati.
L'obiettivo principale di un database NoSQL è avere
- semplicità del design,
- ridimensionamento orizzontale e
- controllo più preciso sulla disponibilità.
I database NoSql utilizzano strutture di dati differenti rispetto ai database relazionali. Rende più veloci alcune operazioni in NoSQL. L'idoneità di un dato database NoSQL dipende dal problema che deve risolvere.
NoSQL contro database relazionale
La tabella seguente elenca i punti che differenziano un database relazionale da un database NoSQL.
Database relazionale | Database NoSql |
---|---|
Supporta un potente linguaggio di query. | Supporta un linguaggio di query molto semplice. |
Ha uno schema fisso. | Nessuno schema fisso. |
Segue ACID (Atomicity, Consistency, Isolation, and Durability). | È solo "alla fine coerente". |
Supporta le transazioni. | Non supporta le transazioni. |
Oltre a Cassandra, abbiamo i seguenti database NoSQL che sono piuttosto popolari:
Apache HBase- HBase è un database distribuito open source, non relazionale, modellato sul BigTable di Google ed è scritto in Java. È sviluppato come parte del progetto Apache Hadoop e funziona su HDFS, fornendo funzionalità simili a BigTable per Hadoop.
MongoDB - MongoDB è un sistema di database orientato ai documenti multipiattaforma che evita di utilizzare la tradizionale struttura di database relazionale basata su tabelle a favore di documenti simili a JSON con schemi dinamici che rendono più semplice e veloce l'integrazione dei dati in alcuni tipi di applicazioni.
Cos'è Apache Cassandra?
Apache Cassandra è un sistema di archiviazione (database) open source, distribuito e decentralizzato / distribuito, per la gestione di grandi quantità di dati strutturati sparsi in tutto il mondo. Fornisce un servizio ad alta disponibilità senza un singolo punto di errore.
Di seguito sono elencati alcuni dei punti notevoli di Apache Cassandra -
È scalabile, a tolleranza di errore e coerente.
È un database orientato alle colonne.
Il suo design di distribuzione è basato su Dynamo di Amazon e il suo modello di dati su Bigtable di Google.
Creato su Facebook, differisce nettamente dai sistemi di gestione dei database relazionali.
Cassandra implementa un modello di replica in stile Dynamo senza un singolo punto di errore, ma aggiunge un modello di dati "famiglia di colonne" più potente.
Cassandra è utilizzata da alcune delle più grandi aziende come Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix e altre.
Caratteristiche di Cassandra
Cassandra è diventata così popolare grazie alle sue eccezionali caratteristiche tecniche. Di seguito sono riportate alcune delle caratteristiche di Cassandra:
Elastic scalability- Cassandra è altamente scalabile; consente di aggiungere più hardware per accogliere più clienti e più dati secondo il requisito.
Always on architecture - Cassandra non ha un singolo punto di errore ed è continuamente disponibile per applicazioni business-critical che non possono permettersi un errore.
Fast linear-scale performance- Cassandra è scalabile in modo lineare, ovvero aumenta il throughput all'aumentare del numero di nodi nel cluster. Pertanto mantiene un tempo di risposta rapido.
Flexible data storage- Cassandra ospita tutti i possibili formati di dati, inclusi: strutturato, semi-strutturato e non strutturato. Può adattarsi dinamicamente alle modifiche alle strutture dei dati in base alle proprie esigenze.
Easy data distribution - Cassandra offre la flessibilità di distribuire i dati dove necessario replicando i dati su più data center.
Transaction support - Cassandra supporta proprietà come atomicità, coerenza, isolamento e durata (ACID).
Fast writes- Cassandra è stata progettata per funzionare su hardware economico. Esegue scritture incredibilmente veloci e può memorizzare centinaia di terabyte di dati, senza sacrificare l'efficienza di lettura.
Storia di Cassandra
- Cassandra è stata sviluppata su Facebook per la ricerca nella posta in arrivo.
- È stato reso open source da Facebook nel luglio 2008.
- Cassandra è stata accettata in Apache Incubator nel marzo 2009.
- È stato realizzato un progetto di primo livello Apache dal febbraio 2010.