我有100,000多个字符串与可变数量的字节10-300相匹配。我经常会查找字符串以获取这些字节。
我以最简单/最快的方式执行此操作的天真方法是将每个字符串保存为文件,然后只需打开文件并加载字节。由于群集大小为8k,因此无法使用。您是否可以在不压缩的情况下创建所有100,000个文件的“zip”,这是一种简单快捷的数据访问方式吗?我是否必须学习如何建立数据库?
简单来说,我的意思是代码最少而且速度快,我的意思是这是经常查找数据所以必须快速执行。我真的很喜欢file.open(str)的想法。
编辑 - 我没有控制字符串,除非它们是唯一的。看起来东京内阁有限制性许可证,但我正在谷歌搜索键值商店。既然我没有任何疑问,我只需要进行查询,sqllite似乎有点矫枉过正。
NSDictionary - 我没有想到这一点,但我不确定我是否可以将整个内容加载到内存中并将其保留在那里,因为我无法控制总大小。
答案 0 :(得分:5)
使用简单的快速nosql数据库,如Tokyo Cabinet。它很容易设置/使用,并且比核心数据更快,满足您的需求(您没有复杂的查询),并且比文件快得多。
答案 1 :(得分:4)
听起来你想要使用核心数据。这将比拥有Ks的文件快得多。我的猜测是,这是最快,最强大的解决方案。
答案 2 :(得分:0)
这听起来很像你只是简单的字符串映射 - >数据
某些通用地图符号中的类似内容:
data = {
'string1' => 0x00000001,
'string2' => 0x00000002,
'string3' => 0x00000003,
}
您似乎也不需要“查询”本身,而是您准确地知道密钥,只需要获取其相关值。
如果是这种情况,您可以尝试一个简单的property list并查看它是否足够高效。您可以加载该文件并获取一个NSDictionary对象以供您随意使用。如果它不具备性能(我不会感到惊讶),sqlite数据库或一些小的嵌入式键值存储应该可以解决问题。