如何在键/值存储之上构建数据库索引?

时间:2012-01-28 17:39:12

标签: database nosql key-value indexeddb leveldb

我正在阅读LevelDB,并发现:

  

Chrome浏览器的即将推出的版本包括构建在LevelDB之上的IndexedDB HTML5 API的实现

IndexedDB也是一个简单的键/值存储,可以索引数据。

我的问题是:如何在键/值商店之上构建索引?我知道索引在它的最低级别是n-ary树,我理解数据在数据库中索引的方式。但是如何使用像LevelDB这样的键/值存储来创建数据库索引呢?

2 个答案:

答案 0 :(得分:7)

重要的功能并不是它支持自定义比较器,而是支持通过键进行有序迭代,从而搜索部分键。您可以使用约定来分隔字符串值来模拟键中的字段。位于leveldb之上的许多脚本层使用这种方法。

键值存储的字典视图是您只能通过完全匹配来判断键是否存在。使用只是这样的KV商店作为数据库索引的基础是不可行的。

只要您可以从部分匹配开始迭代键,就足以为索引提供搜索和排序操作。

答案 1 :(得分:5)

只有几件事,LevelDB支持使用自定义比较器对数据进行排序,来自page you linked to

根据项目现场,主要特点是:

  • 键和值是任意字节数组。
  • 按键排序存储数据。
  • 来电者可以提供自定义比较功能来覆盖排序顺序。
  • ....

因此,LevelDB可以包含可以根据1种排序顺序排序/索引的数据。

如果您需要多个可索引字段,则只需添加自己的B-Tree即可在LevelDB上运行。我认为这是Chrome浏览器采用的方法类型,但我只是在猜测。

您始终可以浏览the Chrome source