无法在Java Edition中更改Berkeley DB数据库类型?

sub*_*bbu 1 database berkeley-db berkeley-db-je

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

小智 10

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

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

围绕这个主题的一些有用的技术花絮:

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

我希望这有用.

问候,

戴夫