问题标签 [mapdb]

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 回答
217 浏览

mapdb - MapDb:地图数量是否有限制

我正在使用 mapdb 1.0.7,我的问题是:我可以使用单个 Db 实例创建的地图数量是否有任何限制?或者理论上是无限的。

我已经测试创建 1.000.000 个地图,每个地图有 25 个条目。这工作正常。但是有什么限制吗?

亲切的问候托尔斯滕

0 投票
1 回答
218 浏览

commit - java.lang.IllegalAccessError: WAL 不为空;先提交,而不是紧凑

我把“localDb.commit();” 在每个“localDb.compact();”之前 但仍然得到例外:

线程“Thread-0”java.lang.IllegalAccessError 中的异常:WAL 不为空;先提交,然后在 org.mapdb.StoreDirect.compact(StoreDirect.java:810) 的 org.mapdb.EngineWrapper.compact(EngineWrapper.java:130) 的 org.mapdb.StoreWAL.compactPreUnderLock(StoreWAL.java:1100) 进行压缩在 org.mapdb.EngineWrapper.compact(EngineWrapper.java:130) 在 org.mapdb.DB.compact(DB.java:1626)

我的 commit()、compact() 位于 Thread.run() 中,我的 DBMaker 配置为:

存储大小:471M,包括*.compact、*.compact.p、*.p、*.t java -version: java version "1.8.0_11" uname -r: 2.6.32-279.el6.x86_64

谢谢!

0 投票
0 回答
855 浏览

queue - java.io.IOException:错误的索引校验和,存储未正确关闭并且可能已损坏

我在重启 Jetty 后遇到了异常,它包含通过 MapDB 的队列实现的生产者-消费者。我没有调用“DBMaker.transactionDisable()”,但是为什么还是会出现上述异常?

在我重新启动 Jetty 之前,我发现消费者似乎被阻止了。通过 jstack 命令,我得到了很多以下日志:

“qtp1730704097-270”#270 prio=5 os_prio=0 tid=0x00007f7b60006800 nid=0xb44f 等待条件 [0x00007f7986ae9000]
java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - 在 java.util 中等待 <0x000000054047c420> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) .concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at org.eclipse.jetty.util.BlockingArrayQueue.poll(BlockingArrayQueue .java:342) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.access$600(QueuedThreadPool.java:44) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.idleJobPoll(QueuedThreadPool.java:526) 在 org .eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) 在 java.lang.Thread.run(Thread.java:745)

锁定的可拥有同步器: - 无

以下是一些代码片段:

java -版本:java版本“1.8.0_11”

谢谢!

0 投票
1 回答
564 浏览

java - MapDB固定键值结构

我想在 MapDB 中存储数十亿个键值对。我有具体要求:

key = long (8 bytes) value = (UUID + from-date + to-date) 的最多 5 个条目,所以 5 * 32 bytes = 160

要求是具有单线程应用程序:按键加载,并更改条目中的日期之一。值的大小不会改变。

我想知道最有效的设置是获取和放置。我是否通过预先分配 160 字节数组并将其用作值来获得性能?或者没关系,只使用大小灵活的字节数组?

目前我有

泵:

来源在哪里

正在加载

在使用数据泵加载包含 20,000,000 个项目的地图后(性能会随着时间的推移而下降),查找结果有点令人失望:

在 199,999 毫秒内进行 200,000 次查找。(约1000个/秒)

第二次运行我的测试应用程序后,查找显着增加:

在 7,597 毫秒内进行 200,000 次查找。

考虑到键/值的固定大小要求,我能做些什么来提高性能?我可以启用任何选项吗?

我使用了 TreeMap,因为它有一个数据泵。使用 HashMap 时性能会显着提高吗?

干杯!

0 投票
1 回答
115 浏览

mapdb - newTempHashMap 如何在 mapdb 中工作?

newTempHashMap 如何在 mapdb 中工作?它只是一个文件支持的哈希映射还是有一个内存缓存层?

0 投票
1 回答
761 浏览

android - 在 Android 中使用 MapDB 的最佳实践

在 Android 中使用 MapDB 的最佳方式是什么,尤其是在 Activity 生命周期方面?只要所有地图实例都被正确地垃圾收集起来,保留一个单独的数据库实例会导致内存问题吗?

如果一个 DB 实例在关闭之前被垃圾回收(假设所有事务都已提交),会发生什么?

0 投票
1 回答
412 浏览

mapdb - 禁用内存映射文件和事务的 MapDB 持久性

我有一个关于使用 MapDB 的问题。当使用带有内存映射文件和禁用事务的 MapDB 时,即使 JVM 崩溃或被杀死,MapDB 是否能确保数据的持久性?

0 投票
1 回答
169 浏览

java - MapDB 并行创建地图

我正在使用 MapDB 创建并行地图 - 想知道它是否安全以及是否可以以更好的方式完成。还假设每个销售表查询可以产生数百万条记录。

0 投票
1 回答
1075 浏览

java - MapDB 文件备份

我正在使用这样创建的文件支持的 MapDB:

我注意到创建了 3 个文件:

  1. D b
  2. 数据库
  3. 数据库.t

我需要一种远程存储和检索数据库的方法。我需要使用单个文件(存储文件/检索文件)。我需要所有三个文件吗?我发现尝试仅从“主”文件(db)重新创建数据库会引发异常。有没有办法(一些配置选项或其他东西)我可以告诉 MapDB 只使用一个文件?

谢谢你的帮助

0 投票
1 回答
522 浏览

mapdb - 如何在 mapDB 中使用复合键编写树形图

我们有https://github.com/jankotek/mapdb/blob/master/src/test/java/examples/TreeMap_Composite_Key.java示例但不工作。请提供一些示例代码。