database - 无法在 Java 版中更改 Berkeley DB 数据库类型?

标签 database berkeley-db berkeley-db-je

我正在寻找将 BDB 的 Java Edition 4.1.7 的数据库类型从 BTree 更改为 Hash。 Core 版本有 DatabaseType.HASH、DatabaseType.RECNO 和 DatabaseType.Queue——Java 版不支持这些。如果是这样,是否有理由放弃这些?

最佳答案

这里是 Berkeley DB 的产品管理总监 David Segleau。通常,我们建议人们在 Berkeley DB forums 上提问.您会在那里找到一个由活跃的 Berkeley DB 应用程序开发人员组成的大型社区。

是的,Berkeley DB(C 中的原始产品)具有 B-Tree、Hash、Queue 和 Recno 访问方法。 Berkeley DB Java 版仅支持 B-Tree。主要原因是我们大约 99% 的用户使用 B-Tree 进行存储,而 Hash 仅被一小部分应用程序使用。

关于这个主题的一些有用的技术花絮:

  1. Hash 对于拥有庞大数据集和可用内存缓存量非常小的人特别有用。在这种特定情况下,B-Tree 可能需要多个 I/O 才能获取内部索引页(不适合缓存),然后获取记录。哈希通常可以通过单个 I/O 访问数据记录。
  2. 如果您想按顺序访问数据或允许重复,哈希通常没有帮助,因为哈希索引中没有隐含的顺序。
  3. 大多数应用程序都有足够的可用内存缓存来保存 B 树的内部节点以及最常访问的数据记录。在这种更常见的情况下,B 树和哈希将具有几乎相同的性能。
  4. 在过去的一年里,Berkeley DB Java 版团队一直与使用超大数据集(在 250GB - 低 TB 范围内)的客户和应用程序开发人员密切合作。特别是,他们一直专注于如何最大化缓存效率、改进缓存逐出算法以及最小化 Java 垃圾收集的影响。我们发现 BDB JE 4.1 在缓存管理和效率方面表现得更好,尤其是对于超过可用缓存的数据集。有关此更改的更多信息,请参阅 Berkeley DB 下载页面上的 BDB JE 4.1.7 更改日志。
  5. 有关 Berkeley DB 中哈希与 B 树访问方法的更多信息,请参阅 BDB 引用手册第 2 章(选择访问方法)。

关于database - 无法在 Java 版中更改 Berkeley DB 数据库类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674674/

相关文章:

java - 京都内阁/伯克利 DB : Hash table size limitations

berkeley-db - 你能说明一下使用 Berkeley DB XML 的情况吗

c++ - Berkeley DB(无法定位组件)

performance - Berkeley DB Java 版 - 调整大量数据

mysql - 一个月内可用预约空档的 SQL 查询

mysql - 在自引用表中显示同一列两次

asp.net - 从 mySQL 表中检索 ASP.NET 中的自动递增列值,而不使用存储过程

python - 将 python 列表存储到数据库的最佳方法?

java - 为什么 Titan 会创建配置唯一的重复顶点键?

berkeley-db - berkeley-db-je 的最新版本是什么?