问题标签 [berkeley-db-je]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
140 浏览

java - 使用 JPL 在 Java 中的 BDB 中存储子类

我正在尝试使用 JPL 将我的对象持久化到一个简单的 BDB 中。问题是,如果我尝试将子类存储在主索引中,则会出现错误(如下)。

子类在数据方面没有任何不同,但它们在功能上是不同的,我希望子类成为编组的实例类型。如果必须,那么密钥可以包含有问题的类,我可以自己实例化它

也许我需要每个子类一个索引?但这似乎不对,而且肯定会使查找过程复杂化。

例子:

班级

0 投票
0 回答
144 浏览

berkeley-db-je - BerkeleyDB-JE 的最佳日志文件大小

当我试图了解我们的应用程序的性能问题时,我遇到了 BerkeleyDB-JE 的配置选项je.log.fileMax。但是,如果有的话,我找不到任何描述/文档何时以及如何更改此值。

我现在在 ~600 个文件中有 ~ 6GB。数据变化相当密集。我是否应该关心日志文件的大小,如果是,是否有指导方针或最佳实践?

0 投票
1 回答
324 浏览

java - Berkeley DB Java 版:环境创造斗争

我是 Berkeley DB Java Ed 的新手。我正在尝试使用它。我有一个非常简单的问题。我无法为数据库创建环境。我正在使用这段代码:

即使我使用了 EnvironmentConfig.setAllowConfig(true),它也不会创建所需的文件:

我真的不明白:(关于如何创建数据库的任何想法?关于我的设置你还需要知道什么吗?谢谢你的帮助!

0 投票
1 回答
42 浏览

berkeley-db-je - Berkeley DB JE 环境锁

我遇到了伯克利环境的问题。一个应用程序可以从环境中写入和读取,但是当另一个应用程序试图从中检索时,它无法打开环境,因为它已被锁定。我已将检索过程配置为只读。知道为什么会这样吗?谢谢。

0 投票
1 回答
620 浏览

java - 在多数据库、单一 Berkeley DB JE 环境中删除数据库

我在 BerkeleyDB JE 环境中有一个耦合的数据库和一个(临时和辅助)数据库。问题如下:

  • 我正在使用事务,原子性必须跨越主数据库和辅助数据库
  • 因此,据我了解文档,我必须使用单个环境(事务不能跨越多个环境)
  • 所以两个数据库共享一个目录。但是他们是否也共享相同的文件?
  • 因为辅助数据库可以变得非常大,我想在应用程序开始时擦除它。
  • 我曾经e.truncateDatabase(txn, name, false)这样做过
  • 但似乎数据库目录永远不会缩小,所以如果在每个应用程序运行中 aux DB 使用例如 500 MB,那么在运行四次之后,目录已经是 2 GB,无论截断如何。我也看不到主数据库和辅助数据库的不同文件

我怎样才能真正擦除 aux 数据库,以便释放磁盘空间?这也是一个性能问题,因为对于那几个 GB 的大目录,BDB 在启动和关闭时会遇到严重的问题。我可以强制 BDB 使用单独的文件,这样我就可以删除一个特定的文件吗?


不知何故,这个单一的环境似乎是问题的根源。例如,我很想通过提供辅助数据库来提高性能,setTxnNoSync()但这也会影响主数据库。


如果我setTemporary在辅助数据库上使用,我会得到一个运行时异常,显然不允许使用临时数据库的事务!?

java.lang.IllegalArgumentException: 尝试打开数据库辅助并且以下两个或多个独占属性为真:deferredWrite、临时、事务

0 投票
0 回答
92 浏览

java - 为什么我会选择 BerkeleyDB JE v6 而不是 v5?

不幸的是, Oracle BDB 发行说明根本没有内容。

为什么我要从 BDB JE 版本 5 切换到版本 6?它是否有显着的性能改进?因为如果没有,我只能看到这两个缺点:

  • v5 使用 Sleepycat,v6 使用 AGPL 3。因此 v5 与 GPL v2+ 兼容,而 v6 需要我转到 GPL v3
  • v5 适用于 Java 6,v6 需要 Java 7
0 投票
0 回答
316 浏览

berkeley-db-je - 如何优化 berkeley-DB-JE 环境以实现快速恢复?

我们正在运行一个简单的多线程 Java 应用程序,它使用 Berkeley-DB 数据库进行存储。大约有 500 个线程,每个线程都有自己的 Berkeley-DB 数据库——每个数据库大约有 100K 的值键对。所有数据库都是事务性的,每个事务最多有大约 1000 个操作。没有长时间运行的事务。

问题是,有时在重新启动我们的应用程序时,Berkeley-DB 的恢复需要很长时间。在恢复期间(打开环境),我们看到 java 进程正在以 ~100MB/s 的速度从磁盘读取。没有写 - 只是阅读。

我们的设置是这样的:

我们还尝试每 15 分钟手动运行一次检查点(假设检查点可能会停止或其他情况)。我们也设置了setMinimizeRecoveryTime(true)。但没有帮助。

我们假设问题可能出在一些 java 或 Berkeley DB 配置上。

有没有办法在牺牲放入数据库的速度的同时确保更快的恢复时间?

0 投票
1 回答
150 浏览

database - 关于 Berkeley DB Java 版

我正在使用 Berkeley DB Java 版(6.3.8),但我不确定数据库是否应该由一个 JVM 实例访问。两个 JVM 实例可以同时访问它吗(假设一个实例做 put 和 get,而另一个实例只做 get)?

0 投票
1 回答
126 浏览

java - 如何使用满足条件的 Berkeley DB 获取所有对象

我昨天刚刚了解了 Berkeley DB 及其性能。我愿意在 Java 项目中使用它。

我想知道的是,如何获取存储在我的数据库中满足特定条件的所有对象。

例如,我存储了Message(int id, String value, Date date)类型的对象,我想获取过去 10 分钟的所有消息。

换句话说,这个 SQL 查询的等价物是什么

在伯克利数据库。

是否可以使用 Berkeley DB 的 API 来完成,或者我应该通过编码来完成这一切?

提前致谢。

0 投票
1 回答
31 浏览

java - berkleybd Java版API关于openbatabase

我在oracle库上阅读了“Bekeley DB Java版入门”的文档。我找到了这个API:

Database
openDatabase(Transaction txn, String databaseName, DatabaseConfig dbConfig) 打开并选择性地创建一个数据库。

但是当我在我的应用程序中使用时,我发现了这个:

公共数据库 openDatabase(Transaction var1, String var2, String var3, DatabaseConfig var4) throws DatabaseException, FileNotFoundException { return new Database(DatabaseConfig.checkNull(var4).openDatabase(this.dbenv, var1 == null?null:var1.txn, var2 , var3)); }

在此处 输入图像描述在此处输入图像描述 有四个参数不是三个,我不知道发生了什么...请有人帮助我,谢谢