Ich bin auf der Suche nach einer Schlüsselwertspeicher-Datenbank auf iOS. Es sollte auf sqlite basieren, so scheint YapDatabase eine gute Wahl zu sein.YapDatabase verwendet nur eine einzige Tabelle zum Speichern von Daten
Aber ich finde YapDatabase verwendet nur eine einzige Tabelle, um "The main database table is named "database"" zu zitieren: CREATE TABLE "database2" ("rowid" INTEGER PRIMARY KEY, "collection" CHAR NOT NULL, "key" CHAR NOT NULL, "data" BLOB, "metadata" BLOB)
. Ich sorge mich darum, verschiedene Arten von Objekten in derselben Spalte zu speichern.
Zum Beispiel plane ich, YapDatabase für meine Chat-App zu verwenden und jede Nachricht in |collection|key|object|metadata|
zu speichern. Jede Nachricht hat eine eindeutige ID, die als Schlüssel verwendet wird, Nachrichteninhalt ist normalerweise nstring, der als Objekt verwendet wird, Zeitstempel mit anderen Daten werden als Metadaten verwendet. Genau wie YapDatase Autor beantwortet here.
Manchmal werden Bilder gesendet. Die Bilder sind klein, normalerweise um einige hundert kb, ich möchte sie nicht als Dateien speichern, ich glaube, sie sollten als Blob gespeichert werden.
Aber wenn ich YapDatabase verwenden, werden sie in der gleichen Tabelle wie meine normalen Textnachrichten gespeichert. Dann wie kann ich eine Abfrage wie, sagte alle meine Textnachrichten finden?
Ist mein Anliegen gültig (verschiedene Typen von Objekten in derselben Spalte speichern)? Muss ich sie in getrennten Tabellen speichern? Wenn ja, wie? Wenn nicht, wie finde ich alle meine Textnachrichten leicht?
Also haben Sie vorgeschlagen, wenn ich den Schlüssel-Wert-Speicher verwenden sollte, sollte ich mir keine Gedanken über die zugrunde liegende Tabelle machen? – Qiulang
Nein, ich habe vorgeschlagen, dass Sie nur dann einen Schlüssel/Wert-Speicher auswählen sollten, wenn Sie sich keine Gedanken über die zugrunde liegende Tabelle machen wollen. –