2010-01-26 17 views
10

Sto lavorando a un'applicazione che sto per scrivere con C e sto considerando di utilizzare un nosql db per memorizzare i dati di timeseries con al massimo 8 o 9 campi. Ma in ogni 5 minuti ci saranno enormi operazioni di scrittura come 2-10 milioni di righe e poi ci saranno letture (ma le prestazioni non sono così cruciali in lettura quanto nell'operazione di scrittura).Quale db NoSQL usare con C?

Sto considerando di utilizzare un db NoSQL qui per archiviare i dati ma non posso decidere quale utilizzare. Couchdb sembra avere un driver stabile chiamato pillowtalk per C; ma l'autista di Mongo non sembra promettente quanto il cuscino. Sono aperto anche ad altri suggerimenti.

Qual è la vostra raccomandazione?

risposta

6

Per vincoli di prestazioni folli non si può battere Tokyo Gabinetto: http://fallabs.com/tokyocabinet/

C'è anche una componente server chiamato Tokyo Tyrant, che sembra davvero cool.

+0

Ha un API C e mi puoi fornire alcune informazioni di riferimento relative a questo. – systemsfault

+0

È scritto in C e ha un'API eccellente. Puoi leggere i benchmark qui: http://1978th.net/tokyocabinet/benchmark.pdf – jckdnk111

+0

wow i risultati sono davvero fantastici, sto attualmente testando il cabinet di tokyo. Anche dal documento che hai inviato la performance di cdb sembra interessante. Quali sono i principali vantaggi di tokyodb su cdb? – systemsfault

0

Che dire di Sqlite? Il sito è here. Il front-end per modificare/gestire il database sqlite è sqliteman.

Spero che questo aiuti.

+0

sì, so di sqllite e bdb. Ma non sono sicuro che rdbms si inserisca nel mio caso. Perché il mio scopo principale qui è archiviare i dati. Non eseguirò query complesse. anche la scalabilità verticale di couchdb sembra accattivante. Ma questa opzione che hai menzionato è ancora nella mia mente. – systemsfault

+0

@holydiver: guarda qui ... all'altra domanda SO ... http: //stackoverflow.com/questions/417917/alternatives-to-sqlite – t0mm13b

1

Il progetto desidera supportare una qualche forma di dati offline? In tal caso, dovresti probabilmente andare con CouchDB poiché il modello di replica è progettato per supportare le modifiche e la sincronizzazione dei dati offline.

+0

sì in realtà supporta i dati offline. ma couchdb è piuttosto lento rispetto ad altre opzioni. – systemsfault

+2

so di database couchdb con molti terabyte e molti indici che funzionano molto velocemente per molti utenti simultanei. la maggior parte dei benchmark MongoDB (per le scritture) sono un po 'fuorvianti dal momento che le chiamate insert() in MongoDB non restituiscono una risposta e non sono garantite per essere scritte su disco o persino accessibili. I benchmark di scrittura di MongoDB sembrano testare per lo più socket.write() volte :) – mikeal

5

MongoDB funziona alla grande con C - c'è sia un driver C che un driver C++. Il database utilizza il driver C++ stesso per funzioni come la replica (MongoDB è scritto in C++).

http://www.mongodb.org/display/DOCS/Drivers