lmdb 密钥在 lmdb 环境中的作用域如何?



疑问在于 lmdb 键的命名空间范围。密钥在 lmdb 环境中是否应该是唯一的?或者它们在 DBI 中应该是唯一的?IOW,如果两个不同的对象位于两个不同的 dbis 下,我们能否在同一个 lmdb 环境中通过相同的键寻址它们?

类比,在 SQL 中,主键需要在表中是唯一的。因此,不同的表可以具有相同的主键,例如,1将根据它应用于哪个表来定位不同的记录。在 lmdb 中是否可以使用相同的用例,其中可以重用键,并且它会根据它所应用的 dbi 定位不同的对象?

类比2:在Firestore中,如果两个不同的对象位于不同的Firestore集合中,我可以在同一键下存储两个不同的对象。

每个 DBI 都是唯一的,除非您在创建 DBI 时使用MDB_DUPSORT标志: http://www.lmdb.tech/doc/group__mdb__dbi__open.html#gae0626566c2562e9007f5c8c9535bab1a

在这种情况下,您可能有多个条目具有相同的键。它们将改为按其相应的值排序。这对于构建二级索引(其中多个记录可以具有相同的索引条目(特别有用。

在您的情况下,如果您有 2 条具有相同 UUID 的记录,您可以使用排序重复项,或者在值中存储某种数组结构。

有关 LMDB 的问题应直接访问 OpenLDAP-Technical 电子邮件列表。Stackoverflow 不是 LMDB 支持论坛。

LMDB 中的命名数据库是独立的命名空间。

最新更新