【问题标题】:How are lmdb keys scoped in an lmdb environment?lmdb 环境中的 lmdb 键范围如何?
【发布时间】:2020-01-19 19:47:05
【问题描述】:

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

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

analogy2:can-a-uuid-be-reused-in-firestore 在 firestore 中,如果它们位于不同的 firestore 集合中,我可以将两个不同的对象存储在同一个键下。

【问题讨论】:

    标签: lmdb


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      有关 LMDB 的问题应发送至 OpenLDAP 技术电子邮件列表。 Stackoverflow 不是 LMDB 支持论坛。

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

      【讨论】:

        猜你喜欢
        • 2018-01-07
        • 1970-01-01
        • 1970-01-01
        • 2015-12-06
        • 2016-02-11
        • 1970-01-01
        • 2018-01-03
        • 2016-01-15
        • 1970-01-01
        相关资源
        最近更新 更多