【问题标题】:Cannot change Berkeley DB Database Type in Java Edition?Java 版中无法更改 Berkeley DB 数据库类型?
【发布时间】:2011-01-28 07:14:13
【问题描述】:

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

【问题讨论】:

    标签: database berkeley-db berkeley-db-je


    【解决方案1】:

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

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

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

    1. 哈希对于拥有庞大数据集和非常少量可用内存缓存的人特别有用。在这个特定的场景中,B-Tree 可能需要多个 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 与 B-Tree 访问方法的更多信息,请参阅 BDB 参考手册(选择访问方法)的第 2 章。

    我希望这会有所帮助。

    问候,

    戴夫

    【讨论】:

    • Recno 只是一个带有数字键值的 btree。 Recno 具有围绕逻辑记录编号键的行为的某些特定属性。有关更多信息,请参阅参考指南:bit.ly/f7Kh2P。正如我所提到的,大多数人使用 B 树。如果您对使用 Recno、Hash 或 Queue 感兴趣,最好的选择是通过 Java API 使用 Berkeley DB 产品。
    【解决方案2】:

    我也试图理解同样的事情。当我在 (1) 场景中工作时,我也很欣赏在 berkeley db je 中使用 Hash 的可能性,因此内存大小和数据集大小之间存在特定的比率。

    这方面有什么选择吗?你打算在未来把它放回去吗? berkeley db je 在 oracle.com 上的网站说访问时间是恒定的,与数据集大小无关。如果你使用 BTrees,这种说法是错误的。

    【讨论】:

    • 如果您对使用 Recno、Hash 或 Queue 感兴趣,您最好的选择是通过 Java API 使用 Berkeley DB 产品。 Berkeley DB Java 版从未支持 HASH 访问方法。目前没有计划将其添加到 BDB JE。如果网站上有一些误导性的文字,我深表歉意。显然,访问时间取决于 B 树的深度和所需的 I/O 数量。如果索引和数据已经在内存中,则 B-tree 的深度几乎没有可衡量的影响。
    • 这些任何其他产品和性能问题也可以在 OTN 上的 Berkeley DB 论坛上提出。 BDB Java 版论坛位于:bit.ly/e1AYFi
    猜你喜欢
    • 1970-01-01
    • 2011-04-17
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多