我正在阅读LevelDB,并发现:
Chrome浏览器的即将推出的版本包括构建在LevelDB之上的IndexedDB HTML5 API的实现
IndexedDB也是一个简单的键/值存储,可以索引数据。
我的问题是:如何在键/值商店之上构建索引?我知道索引在它的最低级别是n-ary树,我理解数据在数据库中索引的方式。但是如何使用像LevelDB这样的键/值存储来创建数据库索引呢?
答案 0 :(得分:7)
重要的功能并不是它支持自定义比较器,而是支持通过键进行有序迭代,从而搜索部分键。您可以使用约定来分隔字符串值来模拟键中的字段。位于leveldb之上的许多脚本层使用这种方法。
键值存储的字典视图是您只能通过完全匹配来判断键是否存在。使用只是这样的KV商店作为数据库索引的基础是不可行的。
只要您可以从部分匹配开始迭代键,就足以为索引提供搜索和排序操作。
答案 1 :(得分:5)
只有几件事,LevelDB支持使用自定义比较器对数据进行排序,来自page you linked to:
根据项目现场,主要特点是:
因此,LevelDB可以包含可以根据1种排序顺序排序/索引的数据。
如果您需要多个可索引字段,则只需添加自己的B-Tree即可在LevelDB上运行。我认为这是Chrome浏览器采用的方法类型,但我只是在猜测。
您始终可以浏览the Chrome source。