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 模式就是这样完成的,因此您可以使用范围查询快速获取所有 Attribute
和 Value
,使用给定 Entity
的前缀范围搜索.
索引table使用以下架构:
(Attribute, Value) → Entity
那是第一个table的改版。
这样做是为了快速获取与特定 Attribute == Value
相匹配的 Entity
成为可能,这正是您要查找的内容。
对于您正在寻找的内容,有替代实现。查找我关于 leveldb and key-value stores e.g. Expressing multiple columns in berkeley db in python?
的回答
祝你好运!
如何在 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 模式就是这样完成的,因此您可以使用范围查询快速获取所有 Attribute
和 Value
,使用给定 Entity
的前缀范围搜索.
索引table使用以下架构:
(Attribute, Value) → Entity
那是第一个table的改版。
这样做是为了快速获取与特定 Attribute == Value
相匹配的 Entity
成为可能,这正是您要查找的内容。
对于您正在寻找的内容,有替代实现。查找我关于 leveldb and key-value stores e.g. Expressing multiple columns in berkeley db in python?
的回答祝你好运!