
Cassandra è un database distribuito open source originalmente sviluppato da Facebook, fu implementato da alcuni ingegneri provenienti da Amazon che avevano lavorato per il database Dynamo.
Jeff Hammerbacher che guidava il Facebook Data team, descrive Cassandra come un database bastato sul data model di Google BigTable che viene eseguito su una infrastruttura simile a quella di Amazon Dynamo.
Successivamente Cassandra nel Marzo 2009 è stato ceduto ad Apache che ne cura lo sviluppo. A Febbraio 2010 Apache ha fatto entrare Cassandra nel gruppo dei top-level project. Cassandra è un database progettato per gestire una grande quantità di dati distribuiti su un numero elevato di server commodity offrendo un servizio di alta affidabilità con no single point of failure.
Cassandra è una soluzione NoSQL sviluppata da Facebook per risolvere i problemi relativi alla cattive performance della funzionalità di ricerca Inbox del famoso social network.
Questa funzionalità permette di ricercare tra tutti i messaggi che gli utenti di Facebook si scambiano con i loro amici. L'enormità dei dati e la loro crescita esponenziale e gli stringenti requisiti di performance hanno portato alla realizzazione di questa nuova soluzione di storage.
Una tabella in Cassandra è un mappa multidimensionale distribuita su differenti server indicizzata attraverso una chiave di tipo stringa. La chiave non ha restrizioni sulla dimensione, tipicamente è grande da 16 a 36 bytes, il valore, invece, può essere un oggetto generico strutturato.
Le colonne, similmente a quanto accede per in BigTable, sono raggruppate in entità chiamate column families. Esistono due tipi di column families : Semplici e Super columns families. Quest'ultima può essere vista come una column family dentro una column family.
Caratteristica importante di Cassandra è che l'applicazione può impostare l'ordinamento delle colonne in una column family, scegliendo tra : ordinamento per tempo o per nome. Con l'ordinamento per tempo si possono ottenere maggiori performance per tutte quelle applicazioni che lavorano su dati fortemente correlati nella dimensione temporale. Ad esempio, questo approccio viene utilizzato per conservare i messaggi scambiati tra due utenti di un social network, in cui i dialoghi comunemente vengono mostrati nel portale in base ad un ordinamento temporale.
Bisogna notare che Cassandra supporta la nozione di multiple tables anche se spesso non viene usata e quasi sempre in tutte le applicazioni esiste una sola tabella per schema.
Cassandra espone delle semplici API composte essenzialmente da tre metodi :
insert(table; key; rowMutation)
get(table; key; columnName)
delete(table; key; columnName)
dove il campo columnName si può riferire ad una specifica colonna in una column family, ad una column family, ad una super column family o ad una colonna in una super column.
Cassandra non è single points of failure e può scalare da un solo server a diverse migliaia di macchine in cluster in differenti data center. Nella sua architettura non esistono nodi master e ogni dato può essere scritto in ognuno dei nodi del cluster e può essere letto da ogni altro nodo.
Allo stato attuale, Cassandra viene utilizzato come sistema di storage dalle seguenti aziende:
Facebook, il più famoso social network del web, usa Cassandra per la ricerca dei messaggi scambiati tra gli utenti e per altre funzionalità.
Digg, il più grande portale di social bookmarking a Settembre 2009 [digg] ha iniziato la migrazione verso Cassandra che è terminata a Marzo 2010 [digg2].
Twitter, il più grande portale di microblogging, a causa della vastità di dati trattati dal portale ha deciso di utilizzare Cassandra come sistema di database [twitt].
Rackspace, importante azienda che fornisce hosting online, usa Cassandra internamente.
Cisco's WebEx usa Cassandra per conservare i feed e le attività degli utenti.
IBM ha effettuato una ricerca su come costruire un sistema di gestione mail scalabile basato su Cassandra [ibm].
Reddit, famoso portale di social news, ha sostituito memcacheDB con Cassandra nel Marzo 2010 [redd].
Cloudkick, un cloud server management, usa Cassandra per conservare i nomi e le metriche di performance dei nodi server dei propri clienti [ckick].
Ooyala usa Cassandra per supportare le sue soluzioni di analisi e video business intelligence.
ottimo articol grazie and! ;)
RispondiEliminaGrazie
RispondiElimina