问题标签 [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.
java - Oracle Berkeley DB Java 版 - 辅助键唯一性
我有一个简单的实体类,它应该包含唯一的名称。
由于大量修改,我想使用延迟写入选项。这是我尝试过的测试及其输出。
输出
所以我的问题是,即使它在放置第二个包时抛出异常,为什么它会列出两个包。有什么方法可以在不使用事务的情况下避免这种情况?
谢谢。
java - 在重新加载应用程序 .jar 时将 BDB JE 保留在内存中
当 BDB JE 在他的应用程序进程中运行时,我想找到构建系统的最佳方式,我可以在其中运行 BDB 并重新加载我不断变化的应用程序逻辑和依赖项。
理想情况下,我会在一个单独的进程中运行 BDB,但随后我需要使用共享内存来执行 IPC 以保持带宽。
我的另一个想法是使用 OSGi 来刷新应用程序包。
任何人都有任何聪明的技术来做到这一点。我很欣赏 BDB JE 的嵌入性,但我想吃我的蛋糕。
berkeley-db-je - 在 BerkeleyDB JE 中选择不同的辅助键值
我有一个使用 DPL 的 Berkeley DB JE 设置。
我有一个辅助键字段,它是一个字符串,我想检索该键的所有不同值。不需要额外的过滤,我只想要所有不同的值。
我可以遍历所有条目并将值添加到集合中,但这似乎非常低效,因为我从数十万行中获取了大约 10 个值。
java - Berkeley-db-je dbverify 工具慢
所以我使用 bdb je dbverify 来检查大约 250GB 的大型 bdb 数据库中的损坏情况。下面是我用来运行该工具的命令,它需要很长时间。估计8或9个小时。
我厌倦了大约 2.5GB 的较小 bdb,它需要 6 分钟,当按 100 缩放时,大约需要 10 小时。有什么办法可以加快速度吗?设置还是什么?
dbverify 工具的源代码在这里,它似乎没有提供任何其他选项来进行更快的检查。
berkeley-db-je - 伯克利数据库Java版主键自动递增
我想自动增加伯克利数据库中的主键。我使用@PrimaryKey(sequence="Id")。它工作得很好。但是当我输入另一个数据时,顺序出错了。作为一个例子,当我执行数据库时,主键是“1”,但下一次是“101”,下一次是“201”。这是我的代码。有什么要补充的吗?我+ 没有使用 SequenceConfig config = new SequenceConfig(); config.setAllowCreate(true);。我需要使用它吗。请帮我。
@PrimaryKey(sequence="ID")
长身份证;字符串名称;
java - 类无法加载或不持久:Berkeley DB JE 中的 scala.collection.immutable.List
当我在我的 scala 项目中使用 Berkeley DB JE 时,我定义了一个带有 List 成员的实体。但是,当我运行该项目时,它会抛出一个异常,告诉Class could not be loaded or is not persistent: scala.collection.immutable.List
. 那么我该如何解决这个问题呢?或者只是将 scala List 转换为 java.util.List?
java - Berkeley DB 中的外键
我有两个实体:
第一个是:
第二个是:
我想wordId
成为LexiconEntity
的外键WordEntity
。我怎样才能做到这一点?
java - Berkeley JE StoredMap:替换现有值而不加载前一个
我想更新一个 StoredMap 值,我不关心旧值。我找不到避免加载先前值的方法。
有没有办法优化我的代码并更新现有值而不加载它(或至少防止绑定以处理旧的 DatabaseEntry 字节)?
注意:调用 remove 然后 put 更慢。
berkeley-db - 应用重启后 Berkeley DB 主键序列跳跃 100
(我已经在网上的某个地方看到了这个问题,但是一个依赖于“100”作为搜索词的搜索查询显然不是一个有希望的查询 - 如果这个问题已经被问过,请原谅我)
我刚刚开始使用 Java 中的 berkeley DB 使用其 DPL 功能。我创建了一个“客户端”类,它具有以下主键和序列:
我正在使用主索引添加一些示例实体:
我第一次启动应用程序时,一切正常。序列从 1 开始并增加 1。下次我启动应用程序时,它从 101(步进仍然是 1)开始,而不是从 4 开始(我有 3 个示例实体)。是否有可能以某种方式影响这种行为?我想要一个持续的序列。
编辑: 这是我的测试代码:
商店看起来像这样:
ClientAccessor 是这样的:
客户端看起来像这样:
java - 为什么 Titan 创建配置唯一的重复顶点键?
简要总结
使用最新的 Titan-0.5 快照。我们的代码在并发线程中创建顶点。我们最终会处于一个状态,即我们有多个具有相同键的顶点。由于我们的限制,我们预计这不会发生。
使用以下配置键:
全文
我们有一个配置有唯一顶点属性键的 Titan DB。在并发线程中写入数据库时,我们发现 Titan 使用相同的键持久化多个顶点。
我已将问题提炼为一个测试文件: https ://gist.github.com/ubit-ee/8520304273cd2024af29 这是针对 0.5 分支的最新版本构建的。
该代码生成三个线程,它们通过倒计时锁存器同步以同时启动(尽可能多地)。然后线程: 使用键“KEY_VALUE_A”创建顶点 使用键“KEY_VALUE_B”创建顶点 在两者之间创建一个标签 如果线程要按顺序运行,则可能会因重复键而出现异常。我已经能够强迫这个案子了。
当线程并发运行时,我希望至少有一个线程成功并且任何数量都失败。无论如何,我希望图的最终状态是两个顶点和两者之间的一条边。
不幸的是,当我运行它时,数据库反复处于具有超过 2 个顶点和边的状态。存在具有重复键的顶点。测试将图形转储到 XML。示例: https ://gist.github.com/ubit-ee/d5530e4fa4b87c752294
为 berkeleydb 配置的测试代码,但我也针对 Cassandra 重复了这个问题。
问题
- 我是否正确配置了模式,使得顶点键应该是唯一的?
- 我应该对交易做任何不同的事情吗?
- 我是否误解了泰坦的预期行为?