私はiOS上にキーバリューストアデータベースを探しています。それはsqliteに基づいている必要がありますので、YapDatabaseは良い選択であるようです。YapDatabaseは1つのテーブルのみを使用してデータを格納します
しかし、私はYapDatabaseが "The main database table is named "database""を引用するために1つのテーブルしか使用していないことを発見しました:CREATE TABLE "database2" ("rowid" INTEGER PRIMARY KEY, "collection" CHAR NOT NULL, "key" CHAR NOT NULL, "data" BLOB, "metadata" BLOB)
。だから私は同じ型の列に異なる型のオブジェクトを格納することに懸念しています。
たとえば、チャットアプリケーションにYapDatabaseを使用し、各メッセージを|collection|key|object|metadata|
に保存する予定です。各メッセージには固有のIDがあり、これはキーとして使用され、メッセージの内容は通常オブジェクトとして使用されるnstringで、他の一部のデータではタイムスタンプがメタデータとして使用されます。ちょうどYapDataseの著者がhereと答えたのと同じです。
画像が送信されることがあります。画像は小さく、通常は数百kbsくらいですが、ファイルとして保存する必要はありません。ブロブが適切であると考えて保存しています。
しかし、私はYapDatabseを使用すると、通常のテキストメッセージと同じテーブルに格納されます。それでは、どのように私のテキストメッセージをすべて見つけたような質問をすることができますか?
私の関心事は有効ですか(異なるタイプのオブジェクトを同じ列に保存する)?それらを別々のテーブルに格納する必要がありますか?はいの場合、どうですか?そうでない場合は、どのように私のテキストメッセージを簡単に見つけることができますか?
キー値ストアを使用していた場合は、基になるテーブルについてまったく心配しないでください。 – Qiulang
いいえ、基本的なテーブルについて心配したくない場合にのみ、キー値ストアを選択することをお勧めします。 –