gpt4 book ai didi

key-value - 在 LMDB 之上实现持久关联数组

转载 作者:行者123 更新时间:2023-12-03 09:21:23 25 4
gpt4 key购买 nike

我是键值存储新手。我想尝试将 LMDB 作为持久关联数组,并希望能够使用长长度键,例如文件路径或 URL。

LMDB 定义了编译时常量 MDB_MAXKEYSIZE=511,规定了 key 长度的最大值。

我应该使用什么技术在 LMDB 上实现持久长 key 字典?某种哈希和冲突解决方案?或者使用不同的 MAXKEYSIZE 重新编译,例如 2048?或者 LMDB 是一个错误的工具来完成这项工作?

最佳答案

在我自己的使用中,我通过通过SHA-256散列任意长度的字符串键来处理类似的情况。为 B+ 树生成固定大小的 32 字节摘要 key 。该策略需要注意以下两个注意事项:

  1. 您确实完全失去了执行前缀字符串查找的能力。对于您所描述的用例来说,这通常不是一个重大问题。

  2. 如果您需要能够枚举所有原始字符串键,则需要将原始字符串存储在另一个 LMDB 子数据库中,以便您可以根据 SHA-256 摘要执行查找检索其相应的原始字符串 - 该字符串将作为键/值对的值存储在子数据库中,因此不受 MDB_MAXKEYSIZE 限制。这确实增加了空间需求,为完整扫描中的每个游标操作添加了额外的树查找,并且不会按字典顺序生成字符串。如果您可以容忍这些限制,那么这是一种可行的方法。

关于key-value - 在 LMDB 之上实现持久关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com