1

我正在寻找 iOS 上的键值存储数据库。应该是基于sqlite的,所以YapDatabase似乎是个不错的选择。

但我发现 YapDatabase 只使用一个表,引用“主数据库表名为“数据库” ”: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,作为key,消息内容一般是nstring,作为object,timestamp和其他一些数据作为元数据。就像 YapDatase 作者在这里回答一样。

有时会发送图片。图像很小,通常大约几百 kb,我不想将它们存储为文件,我相信将它们存储为 blob 是合适的。

但是,如果我使用 YapDatabse,它们将存储在与我通常的文本消息相同的表中。那我怎么能做一些查询,比如找到我所有的短信?

我的担忧是否有效(将不同类型的对象存储到同一列中)?我需要将它们存储在单独的表格中吗?如果是,如何?如果没有,我如何轻松找到我所有的短信?

4

1 回答 1

1

键/值存储的全部意义在于它仅使用键来识别值。所以如果要将消息和图片存储在同一个存储中,必须确保它们具有不同的键。

如果要将数据存储在单独的表中,请使用实际具有表的数据库,例如 SQLite。

于 2017-03-14T08:56:05.840 回答