1

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

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

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

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

这是对 BerkeleyDB 的明智/合适的用途吗?

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

4

1 回答 1

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»。我敢打赌,您将能够以更少的头抓挠得到一些工作。

于 2016-08-26T17:18:29.660 回答