2009-03-12 8 views
34

Ho cercato soluzioni di cloud computing/storage per lungo tempo (ispirato a Google Bigtable). Ma non riesco a trovare una soluzione facile da usare e pronta per l'uso.Esiste un cloud store comprovato/Key => Value Database? (Open Source)

Sto cercando un semplice, fault tolerant, Key => Value DB come SimpleDB da Amazon.

Ho visto cose come:

  1. The CouchDB Project: semplici e distribuiti, database fault-tolerant. Ma comprende solo JSON. Nessun connettore XML ecc.
  2. Eucalyptus: Belle interfacce Amazon EC2. Standard aperti & XML. Ma meno distribuito e meno tollerante ai guasti? Ci sono anche molti biglietti aperti con problemi XEN/VMWare.
  3. Cloudstore/Kosmosfs: Nice distributed, fault tolerant fs. Ma è difficile da configurare. Ci sono connettori java?
  4. Apache Hadoop: Bel sistema che molto più delle capacità di memorizzare i dati. Utilizza il proprio Hadoop Distributed File System ed è stato testato su cluster con 2000 nodi.
  5. * Amazon SimpleDB: Impossibile trovare un'alternativa open source! È un sistema carino ma costoso per enormi quantità di dati. E sei dipendente da Amazon.

Ci sono altre soluzioni migliori là fuori? Qual è il migliore da scegliere? Quale offre la più piccola quantità di SOF (Singe Point of Failure)?

+0

Forse Berkeley DB, è possibile eseguire la replica. – tuinstoel

+0

Word of warning: stavo considerando l'utilizzo di HDFS di Hadoop per un progetto che necessitava di un filesystem distribuito. Ho immediatamente abbandonato l'idea dopo aver scoperto che non hanno ancora capito l'alta disponibilità - la macchina del namenode HDFS è un singolo punto di errore senza un meccanismo di failover definito. –

+0

C'è un'alternativa compatibile con lo spin open source a SimpleDB chiamato M/DB: http://gradvs1.mgateway.com/main/index.html?path=mdb – Kaitsu

risposta

7

MongoDB è un'altra opzione, che è molto simile a CouchDB, ma utilizzando linguaggio di query molto simile a SQL, invece di mappa/ridurre in JavaScript. Supporta inoltre indici, query profiling, replica e archiviazione di dati binari.

Ha un'enorme quantità di documentazione che potrebbe essere schiacciante a pugno, quindi vorrei suggerire di iniziare con Developer's tour

1

Si potrebbe voler dare un'occhiata a questo (utilizzando MySQL come memoria dei valori-chiave):

http://bret.appspot.com/entry/how-friendfeed-uses-mysql

+0

MySQL non può soddisfare le mie esigenze, perché non è realmente distribuito, fault-tolerant e ha per lo più un grande SOF. Un archivio per Key => Value archivi flatfile può essere molto meglio di mysql (dimensioni tabella ecc.) –

+0

Nell'articolo, si può vedere che stanno usando cluster MySQL in modo distribuito non SOF. Ehi, forse i file piatti funzionano meglio per il tuo problema, ma ti suggerisco di considerare cosa stanno facendo Friendfeed e altri. – JasonSmith

4

Wikipedia dice che Yahoo both contributes to Hadoop and uses it in production (article linked from wikipedia). Quindi direi che conta per la business-provenness, anche se non sono sicuro se conta come un database di valori K/V.

Non incluso nell'elenco è il sistema Friendfeed di utilizzare MySQL as a simple schema-less key/value store.

È difficile per me capire le tue priorità. CouchDB è semplice, tollerante ai guasti e distribuito, ma in qualche modo lo si esclude perché non ha XML. I connettori XML e Java sono un requisito non dichiarato?

(In ogni caso, CouchDB dovrebbe infatti essere esclusa perché è giovane, le sue API non è stabile, e non è un negozio di valori-chiave.)

+0

E terribilmente lento (CouchDB) –

+0

La velocità del pozzo non è * necessariamente * un deal-killer se si parla di funzionamento distribuito e tolleranza agli errori paralleli. – JasonSmith

+0

Anche io voglio solo dire quanto sono scioccato e orgoglioso di aver ottenuto le mie es-sere e il mio it-es proprio al primo tentativo. – JasonSmith

0

Cloudera è una società che commercializza Apache Hadoop, con un certo valore -add ovviamente, come productization, configurazione, formazione & servizi di supporto.

17

Che ne dici di memcached?

Il blog High Scalability copre questo problema; se c'è una soluzione open source per quello che cerchi, sarà sicuramente lì.

Altri progetti includono:

Un'altra buona lista: Anti-RDBMS: A list of distributed key-value stores

+1

Offre solo la persistenza in memoria! È male se vuoi archiviare di più nel tuo cluster di quanto la RAM sia disponibile. –

+1

Sì, ma ci sono anche memcachedb e altre soluzioni simili che offrono un'implementazione del database + cache effettiva. E http://project-voldemort.com/. in breve, il blog di HS copre tutti questi sistemi, quindi lo troverai o non lo farai;) –

4

Io uso Google Base API di Google, è Xml, gratuito, documentato, basato su cloud e ha connettori per molte lingue. Penso che riempirà il conto se vuoi anche l'hosting gratuito.

Ora se si desidera ospitare i propri server Tokyo cabinet è la risposta, la sua chiave => valore basato, utilizza file flat ed è il database più veloce là fuori in questo momento (molto barebones rispetto a dire Oracle, ma incredibilmente bravo a memorizzazione e accesso ai dati, circa 1 milione di record al secondo, con circa 10 byte di overhead (a seconda del motore di archiviazione)). Per quanto riguarda il business ready, TokyoCabinet è il cuore di un servizio chiamato Mixi, che è l'equivalente di Facebook + MyPage del Giappone, con diversi milioni di utenti pesanti, quindi è in realtà molto combattuto.

+0

Su wikipedia (http://en.wikipedia.org/wiki/Mixi) Posso leggere che Mixi usa diverse centinaia di server MySQL. Usano entrambi o wikipedia è sbagliato? – tuinstoel

+0

Sì, le informazioni non sono aggiornate. –

+0

Spero che le persone di Hazlecast migliorino anche il loro db (flatfiles, ecc.) Tokio Tryant/Tokio Cabinet sono Master/Slave o Master/Standby in cluster. ( –

2

Si potrebbe voler guardare hypertable che è modellato dopo google's bigtable.

0

Invece di cercare qualcosa ispirato a Google bigtable- Perché non usare semplicemente bigtable direttamente? Potresti scrivere un front-end su Google App-Engine.

+2

ha detto che voleva che fosse open source e avrebbe probabilmente gli stessi limiti di costo per i grandi set di dati come SimpleDB di Amazon –

3

Se si desidera qualcosa come Bigtable, non si può andare oltre HBase o Hypertable - sono entrambi cloni Bigtable open source. Una cosa da considerare, però, è se le tue esigenze sono davvero "abbastanza grandi" per Bigtable. È in grado di scalare fino a migliaia di tablet server e, come tale, dispone di un'infrastruttura al suo interno che consente di abilitarla (ad esempio, gestendo l'aspettativa di errori periodici del nodo).

Se non si prevede di crescere fino ad almeno decine di server tablet, è possibile prendere in considerazione una delle alternative proposte: Non è possibile battere BerkelyDb per semplicità, o MySQL per l'ubiquità. Se tutto ciò di cui hai bisogno è un archivio dati chiave/valore, puoi inserire un semplice wrapper 'dict' attorno all'interfaccia del tuo database e spegnere il tuo back-end se sei troppo grande.

+0

Correzione: Hypertable è in C++ –

+0

Grazie per la correzione. –

2

Uso Il CouchDB

  • Cosa c'è di sbagliato con JSON?
  • JSON per XML è banale
0

Tokyo Cabinet ha anche ha ricevuto una certa attenzione in quanto supporta schemi di tabelle, coppie di valori chiave e tabelle hash. Utilizza Lua come piattaforma di scripting incorporata e utilizza HTTP come protocollo di comunicazione. Ecco un great demonstration.