2013-02-19 18 views

risposta

75

non credo che uno dei due è meglio degli altri, non è solo uno o l'altro. Si tratta di sistemi molto diversi, ciascuno con i suoi punti di forza e di debolezza, quindi dipende davvero dai casi d'uso. Possono sicuramente essere utilizzati in complemento l'un l'altro nella stessa infrastruttura.

Per spiegare meglio la differenza mi piacerebbe prendere in prestito un'immagine da Cassandra: the Definitive Guide, dove vanno oltre il teorema CAP. Quello che dicono è fondamentalmente per qualsiasi sistema distribuito, devi trovare un equilibrio tra consistenza, disponibilità e tolleranza di partizione, e puoi solo realisticamente soddisfare 2 di queste proprietà. Da che si può vedere che:

  • Cassandra soddisfa la disponibilità e partizione Tolleranza proprietà.
  • HBase soddisfatto della Coerenza e Proprietà Tolleranza partizione.

CAP

Quando si tratta di Hadoop, HBase è costruito sulla base di HDFS, che lo rende abbastanza comodo da usare se si dispone già di uno stack Hadoop. È supportato anche da Cloudera, che è una distribuzione aziendale standard per Hadoop.

Ma Cassandra ha anche più integrazione con Hadoop, ovvero Datastax Brisk che sta guadagnando popolarità. Ora puoi anche eseguire lo streaming nativo dei dati dall'output di un lavoro Hadoop in un cluster Cassandra utilizzando un formato di output fornito da Cassandra (BulkOutputFormat per esempio), non siamo più al punto in cui Cassandra era solo un progetto autonomo.

Nella mia esperienza, ho trovato che Cassandra è impressionante per letture casuali, e non tanto per le scansioni

di mettere un po 'di colore alla foto, sono stato utilizzando sia al mio lavoro nel stessa infrastruttura, e HBase ha uno scopo ben diverso da quello di Cassandra. Ho usato Cassandra principalmente per ricerche molto veloci in tempo reale, mentre ho usato HBase di più per pesanti lavori batch ETL con requisiti di latenza più bassi.

Questa è una domanda che sarebbe veramente degna di un post sul blog, quindi invece di andare avanti e avanti vorrei indirizzarvi a an article che riassume molte delle differenze tra i due sistemi di chiavi. La linea di fondo è che non esiste una soluzione IMHO di livello superiore e dovresti davvero pensare ai tuoi casi d'uso per vedere quale sistema è più adatto.

+0

Come può MySql avere disponibilità nel diagramma? Come viene definita la disponibilità? Non ha senso per me, penso che devi scegliere tra C o A, non tutti 2. http://codahale.com/you-cant-sacrifice-partition-tolerance/ – user1944408

+1

@ user1944408 Ovviamente in ogni sistema c'è un senso di compromesso, questo è semplicemente per illustrare le dipendenze scorrevoli. Non puoi ottenere il 100% di una proprietà pur mantenendo il 100% di un'altra proprietà, devi fare alcuni compromessi. Il tuo articolo fa presupporre la tolleranza delle partizioni, quindi ovviamente non puoi avere coerenza e disponibilità con questa ipotesi. Come presi dallo stesso libro, i sistemi sulla linea CA possono essere ad esempio commit a 2 fasi per le transazioni distribuite, quindi il sistema si bloccherebbe quando si verifica una partizione di rete. –

+1

Ciò significa che non sono disponibili quando si verifica la partizione, giusto? Ma lo stesso vale per HBase, quindi significherebbe che HBase è CA. Penso che i database possano essere CP o AP ma non CA. Quale proprietà del database della CA non è contenuta nel database CP? Puoi darmi un esempio? Se si verifica una partizione qual è la differenza tra HBase e MySql? – user1944408

14

Dobbiamo confrontare i pro & con entrambi i database e prendere una decisione protetta in base ai requisiti aziendali.

Cassandra

Pro:

  1. Soddisfa disponibilità & partizionamento di PAC teoria & eventuale coerente.
  2. scalabile con grandi cluster con No Single Point of guasti
  3. SQL come linguaggio di sviluppo consente agli sviluppatori di transizione facilmente da RDBMS sfondo
  4. Cassandra ha eccellente sola riga prestazioni leggere più a lungo come semantica di congruenza sono sufficienti per i casi d'uso
  5. Supporto da Datastax è un grande vantaggio
  6. Ottimizzato per scrive

Contro:

  1. Non supporta basate fila-scan Gamma
  2. non supporta atomica confrontare e Set
  3. Cassandra fa non supporta coprocessore funzionalit y`
  4. Cassandra supporta indici secondari su famiglie di colonne in cui è noto il nome della colonna. (Non su colonne dinamiche).
  5. aggregazioni in Cassandra non sono supportati dal Cassandra nodi

HBase

Pro:

  1. consistenza forte e soddisfa C onsistency & Partitioning of CAP teoria.
  2. RDBMS equivalente innesca & memorizzati procedure
  3. Hadoop supporto
  4. gamma basata scansioni Row
  5. Supporto atomica Confronta e Set
  6. Ottimizzato per leggono, sostenuta da maste a scrittura singola r
  7. Supporto per aggregazione
  8. alta scalabilità & auto Dati sharding

Contro:

  1. Manca linguaggio amichevole per lo sviluppo
  2. Vuol non s upport Leggi Bilanciamento contro una singola riga di carico
  3. operazioni Inter-fila sono non atomica
  4. Singolo punto di errore se solo uno HBase Maestro è stato utilizzato

Dai un'occhiata alla article 1, article 2 e questo presentation per ulteriori dettagli.

Problemi correlati