如何通过nodejs中的值查询levelDB数据库? 我在我的leveldb数据库中有键:值对,我想在其中搜索一些值,然后从该结果中找到键/值对。我是leveldb的初学者。
{
"key1" : {
"data1": "value1",
"data2": "value2",
"data3": "value3"
}
}
因此,我想查询data3 == value3的值并获取该键值对。
在levelDB中,我们只能基于密钥来获取数据。 还有其他选择吗?
答案 0 :(得分:1)
在leveldb中,您可以通过完全匹配或前缀范围来“仅”查询低级别的数据库抽象。
没有某种重复就无法按值查询。
我在graphdb项目中采用的模式是在this之后跟随一个辅助“表”来存储索引。
在Python plyvel中,您可以使用EAV model模拟“表”。或者查看FoundationDB在其Subspace实现中是如何做到的。基本上,给定“表”或“空间”的每个键值对都以特定的字节序列作为前缀。
第一个表如下所示:
(Entity, Attribute) → (Value)
其中Entity
是一个(随机)标识符,而Attribute
是字段名的字节表示,最后但并非最不重要的Value
是与Attribute
相关的字节序列化值给定的Entity
。
以这种方式完成表架构,以便您可以使用给定Attribute
上的前缀范围搜索,使用全部Value
和Entity
的范围查询来快速获取。
索引表使用以下架构:
(Attribute, Value) → Entity
那是第一个表的改组版本。
这样做是为了快速获取与您要查找的特定Entity
相匹配的Attribute == Value
。
您要寻找的还有其他实现。查找有关prefixed databases和键值存储的答案,例如leveldb
祝你好运!