gpt4 book ai didi

java - 在 Berkeley DB Core 和 Berkeley DB JE 之间进行选择

转载 作者:搜寻专家 更新时间:2023-10-30 21:21:59 25 4
gpt4 key购买 nike

我正在设计一个基于 Java 的网络应用程序,我需要一个键值存储。 Berkeley DB 似乎很适合我,但似乎有两个 Berkeley DB 可供选择:用 C 实现的 Berkeley DB Core 和用纯 Java 实现的 Berkeley DB Java 版。

问题是,如何选择使用哪一个? Web 应用程序的可扩展性和性能非常重要(谁知道呢,也许我的想法会成为下一个 Youtube),而且我无法轻易地在两者之间找到任何有意义的基准。我还没有熟悉 Cores Java API,但我很难相信它会比 Java Editions 差很多,而 Java Editions 似乎相当不错。

如果其他一些键值存储会好得多,请随意推荐。我存储的是小型二进制 blob,键可能是数据的哈希值或其他一些唯一 ID。

最佳答案

我在将 BDB-JE 和 BDB-core 与 Java 结合使用方面有相当多的经验。决定使用哪一个非常简单:如果您想要并发,请使用 BDB-JE。如果您想要可扩展性,请使用 BDB-core。

BDB-JE 由于其文件格式和依赖 Java 垃圾收集来清理被逐出的缓存条目,因此在处理大型数据库时性能不佳。预计长时间的垃圾收集暂停或花费大量时间调整魔术 GC 设置。文件格式也有问题,因为后台清理线程必须花费大量时间清理早期缓存驱逐所产生的垃圾。如果您的数据库适合 RAM,BDB-JE 工作得很好。

BDB-core 依赖于页锁策略,高并发应用程序会遇到很多死锁。如果你可以随机排序操作,它会减少死锁的可能性,但它永远不会消除它。由于 BDB-core 以更传统的方式存储数据,因此它可以扩展到超大尺寸,并具有可预测和预期的性能下降。因为它的缓存不是由垃圾收集器管理的,所以它可能非常大并且不会导致任何暂停。

关于java - 在 Berkeley DB Core 和 Berkeley DB JE 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com