2009-08-04 11 views
6

Hat jemand Tokyo Cabinet auf dem iPhone verwendet? Ich bin interessiert zu sehen, ob es echte Leistungsunterschiede zwischen ihm und SQLite3 gibt.Tokyo Cabinet vs SQLite3 auf iPhone

Auch SQLite 3 hat die Ausdruckskraft von SQL, hat Tokyo Cabinet irgendeine Art von Abfragesprache?

Jede Eingabe wäre sehr dankbar, danke.

Antwort

3

Ich habe weder auf dem iPhone speziell verwendet, aber ich habe beide für verschiedene Projekte verwendet. Wie Sie bereits erwähnt haben, bietet SQLite eine SQL-Abfragesprache, mit der Sie viel flexibler nach Daten suchen und suchen können. Angenommen, Sie sind mit SQL vertraut, können Sie Ergebnisse einfach filtern, zusammenfassen und aggregieren.

Tokyo Cabinet bietet eine andere Art von Datenspeichersystem, da es ein Schlüssel-Wert-Speicher ist. Wie der Name schon sagt, dienen diese Systeme zum Speichern von (Schlüssel-, Wert-) Paaren. Im TC gespeicherte Daten müssen einen eindeutigen Schlüssel haben, auf den verwiesen werden kann, und es kann nur durch diesen Schlüssel referenziert werden. Die Schnittstelle für den Zugriff auf TC ist grundsätzlich value = get (key) und set (key, value).

Aus Abfrageperspektive entspricht der Zugriff auf TC in etwa der Verwendung von SQLite und lässt nur Primärschlüsselfelder und ein anderes Datenfeld zu.

Der Hauptvorteil von TC ist die Leistung. Ob und wie viel besser es wäre, hängt stark von der Arbeitsbelastung ab. Im Allgemeinen, wenn Sie nur einen Schlüssel-Wert-Speicher benötigen, sollten Sie mit TC gehen, aber wenn Sie eine SQL-Abfragesprache benötigen, dann SQLite ist es.

+1

Es ist nicht wahr, dass TC nur einen Schlüssel-Wert-Speicher bietet; TCs Tabellendatenbank * unterstützt * einfache Abfragen. Sie sind äquivalent zu SELECT ... WHERE x y, wo der Operator Gleichheit sein kann, String-Präfix, String-Suffix, String regexp, numerisch größer als, numerisch kleiner als. Suchen Sie nach tcrdbqryaddcond in http://tokyocabinet.sourceforge.net/tyrantdoc/. – mjs

0

Die Tokyo Cabinet-Lizenz erlaubt keine statische Verlinkung, daher kann sie nicht für die iPhone-Entwicklung verwendet werden.

+1

Die LGPL verbietet keine statische Verknüpfung. Es erfordert, dass Sie zulassen, dass der Benutzer in der Lage ist, die LGPL zu ersetzen, dynamische Verknüpfung ist nur eine Möglichkeit, dies zu erreichen. Sie können auch Ihren Anwendungsquellcode oder Objektcode freigeben. Ich weiß, dass dies für einige Entwickler inakzeptable Lösungen sind, aber ich wollte nur klar sein. – mikerobi

2

BNRPersistence ist eine Persistence Objects Bibliothek über Tokyo Cabinet gebaut, ich denke, es ist eine wirklich schöne Lösung. Im Web gibt es einen Vergleich zwischen Core Data und Tokyo Cabinet.

Verwandte Themen