2010-01-26 11 views
10

Ich arbeite an einer Anwendung, die ich mit C schreiben werde und ich erwäge, eine nosql db zum Speichern von Zeitreihen Daten mit höchstens 8 oder 9 Felder zu verwenden. Aber alle 5 Minuten gibt es riesige Schreiboperationen wie 2-10 Millionen Zeilen und dann wird es Lesevorgänge geben (aber die Leistung ist beim Lesen nicht so entscheidend wie beim Schreiben).Welche NoSQL-Datenbank wird mit C verwendet?

Ich überlege, hier eine NoSQL db zu verwenden, um die Daten zu speichern, konnte aber nicht entscheiden, welche zu verwenden. Couchdb scheint einen stabilen Treiber namens Pillowtalk für C zu haben; aber der Fahrer von Mongo sieht nicht so vielversprechend aus wie Pillowtalk. Ich bin auch offen für andere Vorschläge.

Was ist Ihre Empfehlung?

Antwort

6

Für verrückt Leistung contraints können Sie nicht Tokyo Cabinet schlagen: http://fallabs.com/tokyocabinet/

Es gibt auch eine Server-Komponente Tokyo Tyrant genannt, die wirklich cool aussieht.

+0

Gibt es eine C api haben und können Sie mir bieten einige Benchmark-Informationen im Zusammenhang mit dieser. – systemsfault

+0

Es ist in C geschrieben und hat eine ausgezeichnete API. Sie können die Benchmarks hier lesen: http://1978th.net/tokyocabinet/benchmark.pdf – jckdnk111

+0

wow Ergebnisse sind ziemlich genial, ich teste gerade Tokyo Schrank. Auch aus dem Dokument, das Sie gesendet haben, sieht cdb's Leistung ebenfalls ansprechend aus. Was sind die wichtigsten Vorteile von tokyodb gegenüber cdb? – systemsfault

0

Was ist mit Sqlite? Die Seite ist here. Das Frontend zum Bearbeiten/Verwalten der SQLite-Datenbank ist sqliteman.

Hoffe, das hilft.

+0

Ja, ich weiß über Sqllite und Bdb. Aber ich bin mir nicht sicher, ob rdbms in meinen Fall passen wird. Weil mein Hauptziel hier ist, die Daten zu archivieren. Ich werde keine komplexen Abfragen durchführen. Auch die vertikale Skalierbarkeit von Couchdb sieht ansprechend aus. Aber diese Option, die Sie erwähnt haben, ist immer noch in meinen Gedanken. – systemsfault

+0

@holydiver: schau hier ... bei der anderen SO Frage ... http: //stackoverflow.com/questions/417917/alternatives-to-sqlite – t0mm13b

1

Soll Ihr Projekt eine Form von Offline-Daten unterstützen? In diesem Fall sollten Sie wahrscheinlich CouchDB verwenden, da das Replikationsmodell Offline-Datenänderungen und -synchronisierungen unterstützt.

+0

ja tatsächlich unterstützt es Offline-Daten. aber Couchdb ist ziemlich langsam im Vergleich zu anderen Optionen. – systemsfault

+2

Ich kenne couchdb-Datenbanken mit vielen Terabyte und vielen Indizes, die für viele gleichzeitige Benutzer schnell laufen. Die meisten MongoDB-Benchmarks (für Schreibvorgänge) sind ein wenig irreführend, da ingone() -Aufrufe in MongoDB keine Antwort zurückgeben und nicht garantiert werden, dass sie auf die Disk geschrieben oder sogar zugänglich sind. MongoDB write benchmarks scheinen meistens socket.write() mal zu testen :) – mikeal

5

MongoDB funktioniert gut mit C - es gibt sowohl einen C-Treiber als auch einen C++ - Treiber. Die Datenbank verwendet den C++ - Treiber selbst für Funktionen wie die Replikation (MongoDB ist in C++ geschrieben).

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

Verwandte Themen