【问题标题】:BerkeleyDB duplicate data items as append-only log?BerkeleyDB 重复数据项作为仅附加日志?
【发布时间】:2017-01-03 03:30:46
【问题描述】:

我正在考虑将 BerkeleyDB Java 版用于一个项目。到目前为止,我只阅读了一些文档(没有编写任何代码),但看起来很匹配。

我想要的功能之一是特定键的仅附加日志。例如

«my key» => «snapshot 1»
         => «snapshot 2»
         => «snapshot 3»

Duplicate Data items 文档看起来像,如果我设置 DB_DUP 标志,我可以为一个键(按可配置顺序)编写许多项目,然后用光标检索它们。

这对 BerkeleyDB 是否合理/合适?

(我确实有其他原因想在项目中使用 BerkeleyDB,这不是我的主要用例。我知道 Redis 中的所有功能,但内存不适合)

【问题讨论】:

    标签: berkeley-db berkeley-db-je


    【解决方案1】:

    您当然可以按照您的描述使用 Berkeley DB。它比简单的键值存储更具挑战性,因为您需要注意游标操作的许多附加标志。它的好处是它只存储了一份密钥!但是,至少在某些版本中,如果它们已排序,您将无法存储相同的数据项。只是,你知道,警告。

    如果您不关心密钥的存储空间,您可以考虑在密钥末尾使用单调递增的数字。然后,您可以像使用简单的键值存储一样使用它,像这样插入您的记录:

    «my key.1» => «snapshot 1»
    «my key.4» => «snapshot 2»
    «my key.9» => «snapshot 3»
    

    您仍将使用光标将它们带入,就像您对重复数据项所做的那样。只需从 «my key.0» 开始搜索,并在看到 «my other key.x» 时终止搜索。我敢打赌,您将能够以更少的头疼得到一些工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2019-08-12
      • 1970-01-01
      • 2013-04-02
      相关资源
      最近更新 更多