Frage

Ich entwickle eine Anwendung, die Daten mit vielen schreibt speichern muss und liest wie die schnelle Suche von Daten (die Notwendigkeit für Indizes von einer Art) erfordern, und auch die Daten serialisiert werden können, und speichern.

Zur Zeit denke ich über SQLite, die die Arbeit erledigt wird, aber ich bin offen für Alternativen. Die Syntax der SQLite paßt wirklich nicht elegant in C ++ Code (zum Beispiel bin ich gezwungen, die Ergebnisse für den Zugriff durch Spaltenindexnummern anstelle von Spaltennamen, etc).

War es hilfreich?

Lösung

mit SQLite bleiben, aber eine gute C ++ Bibliothek für diese finden.

Das Frage Stackoverflow sollten Ihnen helfen. ..

Andere Tipps

Ich würde argumentieren, dass die zugegebene Abhängigkeit von einer Wrapper-Bibliothek ist nicht wert, die Kosten mit den Kosten dieser zusätzlichen Abhängigkeit beschäftigen. Sie wollen nicht das Debuggen diesen Wrapper-Libs geklebt werden, wenn die Dokumentation für sie kaum sein kann. SQLLite gebunden ist, stabiler zu sein und eine bessere Dokumentation und daher eine zuverlässigere Abhängigkeit.

würde ich entweder mit SQLLite beschäftigen oder selbst in irgendeiner intelligente Art und Weise wickeln auf der Grundlage Ihrer Endanwendung.

Es klingt, als ob eine Datenbank die einzige wirkliche Option für Sie ist. Wenn Sie SQLite oder MySQL oder Postgres wählte nicht wirklich in der Spalte Indexpunkt Materie, though.

Vielleicht möchten, was Sie wirklich eine bessere Datenbank-Abstraktion. Vielleicht möchten Sie Poco versuchen, es hat ein großes: http://pocoproject.org/

Berkeley DB aka Sleepycat. Wenn Sie suchen Sie die Archive gibt es einen Artikel von Mike Olsen, die über die großen Nachteile von SQL in jedem Projekt spricht. Es gibt einen anderen Nachfolgeartikel innerhalb des letzten Jahres, das legt nahe, dass SQL ist auf dem Weg heraus ist, weil die ORM-Schichten sind so viel besser.

Wenn Sie mich fragen, mit SQLite bleiben und „Do It Yourself“ - die Verpackung es ganz einfach ist, ich habe verschiedene Umhüllungen über SQLite selbst. Warum? Weil seine API ist viel freundlicher als alles andere Datenbank und Sie brauchen nicht viel Mühe aufwenden. Mit einer Wrapper-Bibliothek werden Sie nur mehr unlnowns hinzufügen und vor allem die meisten Hüllen sind nicht besonders spezialisiert auf Embedded-Datenbanken dienen. Ich wiederhole immer, dass mit eingebetteter Datenbank des richtige Weg aus dem optimalen Ansatz für einen Datenbankserver ist sehr unterschiedlich ...

Wenn SQL-Syntax für Sie nicht wichtig ist, empfehle ich metakit - Es ist eine etwas andere Ansatz, aber es sehr mächtig, und ich weiß persönlich von mehr als ein paar kommerziellen Projekte, die es erfolgreich nutzen, auch auf Embedded-Systemen.

Diese Tutoria l sehr hilfreich ist, um loszulegen.

Könnte ich vorschlagen, dass Sie eine Liste des Wrapper APIs aufgelistet auf der SQLite Website? Es gibt viel es für viele Sprachen, darunter C ++. SQLite plus sieht besonders gut aus. POCO, die 'usuallyuseless' erwähnt, auch gut aussieht.

Ich bin damit einverstanden, es unecht ist zu sagen, SQLite mit inkompatiblen entweder C ++ oder Spaltennamen Indizierung Es gibt viele C ++ SQLite Wrapper, die den Zugriff auf Spalten mit Namen zu fördern. SQLite ++ ist nur eine von vielen.

Statt eines SQL-Derivat, könnte man denken über einen invertierten Index IR-Bibliothek wie Lucene (oder einer der vielen Klone da draußen). Ich weiß, Lucene ist Java, aber man konnte eine verwaltete C ++ Bibliothek Interop mit Lecene.Net schreiben.

Was Geschwindigkeit, bin ich mit der Leistung von Lucene sehr glücklich für seine liest. Es ist nicht so für seine schreibt optimiert, aber es ist immer noch ziemlich gut, solange Ihr nicht einen Index von Millionen von „Dokumente“ zu bauen versucht.

Wenn Sie nicht unter Windows arbeiten, können Sie in Tokyo Cabinet suchen. Es sieht ziemlich gut zu sein. Ich bin für die Win32-Port wartet, also kann ich nicht viel sagen es andere als die Leistung beeindruckend aussieht.

http: // anyall.org/blog/2009/04/performance-comparison-keyvalue-stores-for-language-model-counts/

Dies ist kein SQL-Derivat. Es ist ein gerade b-Baum / Hash-basierten Speicher. Dies ist sehr zu begrüßen, meiner Meinung nach. Die einzige wettbewerbsfähige Bibliothek, die ich bewusst bin, ist Berkeley DB, die weniger als wünschenswert Lizenzierung hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top