BerkeleyDB将数据项重复为仅附加日志?

时间:2016-08-26 12:42:14

标签: berkeley-db berkeley-db-je

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

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

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

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

这对BerkeleyDB来说是否合理/合适?

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

1 个答案:

答案 0 :(得分:0)

您当然可以使用Berkeley DB描述。它比直接的键值存储更具挑战性,因为游标操作还有许多额外的标志需要注意。它的好处是它只存储一个密钥副本!但是,至少在某些版本中,如果对它们进行排序,则无法存储相同的数据项。只是,你知道,警告。

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

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

您仍然会使用光标将它们带入,就像您对重复数据项一样。只需在«my key.0»开始搜索,然后在看到«my other key.x»时将其终止。我敢打赌,你可以通过减少头部磨损来获得一些工作。