nodejs 中 leveldb 数据库中的查询值

query values in leveldb database in nodejs

如何在 nodejs 中通过值查询 levelDB 数据库? 我的 leveldb 数据库中有键:值对,我想在其中搜索一些值并从该结果中找到该键值对。我是 leveldb 的初学者。

{
    "key1" : {
                 "data1": "value1",
                 "data2": "value2",
                 "data3": "value3"
             }
}

所以,我想查询 value where data3 == value3 并获取该键值对。

在levelDB中,我们只能根据key获取数据。 还有其他选择吗?

在 leveldb 中,您可以"only"通过精确键匹配或前缀键范围查询低级数据库抽象。

如果没有某种重复,您不能按值查询。

我在我的graphdb项目中采用的模式是在EAV model之后有一个辅助的"table"来存储索引。

在 Python plyvel 中,您可以使用 prefixed databases 模拟 "table"。或者看看 FoundationDB 在其子空间实现中是如何做到的。基本上,给定的 "table" 或 "space" 的每个键值对都以特定的字节序列为前缀,仅此而已。

第一个 table,如下所示:

(Entity, Attribute) → (Value)

其中 Entity 是(随机)标识符,Attribute 是字段名称的字节表示,最后但并非最不重要的是 Value 是与 [=13 关联的字节序列化值=] 对于给定的 Entity.

table 模式就是这样完成的,因此您可以使用范围查询快速获取所有 AttributeValue,使用给定 Entity 的前缀范围搜索.

索引table使用以下架构:

(Attribute, Value) → Entity

那是第一个table的改版。

这样做是为了快速获取与特定 Attribute == Value 相匹配的 Entity 成为可能,这正是您要查找的内容。

对于您正在寻找的内容,有替代实现。查找我关于 leveldb and key-value stores e.g. Expressing multiple columns in berkeley db in python?

的回答

祝你好运!