问题标签 [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 回答
1006 浏览

java - MapDB 集合大小问题

我正在使用 MapDB 0.9 快照。我有一些包含数百万条记录 String->String 的集合。我的问题是这种 ConcurrentMap(s) 上的方法 size() 需要大量时间和大量内存(我什至有 OutOfMemory 错误)。

有没有其他人遇到过这样的问题?谢谢再见

0 投票
1 回答
2136 浏览

java - 内存不足 w/mapdb

测试 mapdb 时出现内存不足错误。鉴于该项目的整个想法是将数据结构序列化到磁盘并避免内存问题,我认为我做错了什么。任何想法我做错了什么?还是有错误?

堆栈跟踪。我的函数中的第 29 行对应于“assertNotNull(storage.get(key));” 线。

根据 unholysampler 的建议,我进行了以下更改以解决问题。

0 投票
1 回答
1134 浏览

java - MapDB 准备好投入生产了吗?

0 投票
2 回答
2978 浏览

java - 有效地使用 MapDB(对提交感到困惑)

我在一个处理数十亿需要映射/排队的对象的项目中使用MapDB 。程序完成后我不需要任何持久性(MapDB 数据库都是临时的)。我希望程序尽可能快地运行,但我对 MapDB 的 commit() 函数(我认为它与性能相关)感到困惑,即使在阅读了docs之后也是如此。我的问题:

  1. 提交到底是做什么的?我的工作理解是它将对象从堆序列化到磁盘,从而释放堆空间。这是准确的吗?

  2. 对刚刚提交的对象的引用会发生什么?它们是否被 GC 清理了,或者它们是否以某种方式“引用”磁盘上的一个对象(MapDB 使它变得透明?)

最终,我想知道如何尽可能高效地使用 MapDB,但是如果不知道 commit() 的用途,我就无法做到这一点。对于您有效使用 MapDB 的任何其他建议,我将不胜感激。

0 投票
1 回答
3202 浏览

java - Java:使用 mapDB,写入数据库会覆盖以前的条目

我使用 mapDB 来存储插入到地图中的数据。我按照 mapDB-Site 上的说明进行操作,能够设置数据库并用值填充它。但是我的问题就在这里,我将数据插入到地图中,然后调用数据库类将地图插入到数据库中。然后将当前映射添加到数据库中,但会自动覆盖先前的条目,因此条目数始终为 1。

这是我的代码:

就像我说的那样,我用一些值和 Method Database.putHW 填充 Multimap mm,它看起来像这样(在 mapDB 页面的示例中创建)。

那么为什么数据库中的 multimapHW 只包含 1 个条目,而不是许多条目?

0 投票
2 回答
1293 浏览

java - 如何在 MapDB 中使用字节数组作为键

我有一个用例,我想使用 opaque byte[] 作为 MapDb 的键。我发现了这一点——使用字节数组作为映射键——限制很快;并想知道推荐哪种方法。

我宁愿不创建一堆临时对象和序列化开销,但这似乎ByteBuffer.wrap(my_bytes)是 Java 指向我的地方。

我希望 MapDB 的核心开发人员之一可以对此或ByteBufferJVM 专家进行权衡。

0 投票
1 回答
1271 浏览

database - mapdb如何坚持交叉重启

我使用mapdb如下

那么当我这样做的时候

但是,如果我重新启动我的服务器,我确实看到我在磁盘上有 cache.db 但是读取时它将有一个空映射

所以

从文件重新启动后,如何让它重新读取我的地图?

0 投票
1 回答
1968 浏览

java - 在 mapDb 中序列化和反序列化对象 - Java

我正在尝试序列化和反序列化一个对象以将其存储在 mapDb 中。

我设法使用这个片段序列化对象:

之后,我将“结果”存储在 mapDb 中。一切似乎都像一个魅力。

不幸的是,我在尝试反序列化时遇到了一些问题。

这里的片段:

str是来自 mapDB 的序列化对象,被视为字符串。之后,我将其“投射”为 byteArray。我使用这种方法是因为我在从 mapDb 作为对象获取数据时遇到了一些问题。

所以,我问你,我该如何解决这个问题。因为对象“ a ”是 java.lang.Integer 的一个实例,而不是所需的类,所以反序列化不起作用。

0 投票
1 回答
645 浏览

java - MapDB 批量导入性能

是否可以通过添加记录块而不是逐个添加记录来提高 mapdb 在大型数据集上的 HTreeMap 性能?我使用文件系统。

0 投票
3 回答
658 浏览

java - 如何在 MapDB 的 BTreeMap 实现中使用字节数组作为键

有没有办法像这样使用字节数组作为键BTreeMap

当前尝试将新对象放入地图时会引发此异常:

什么是使它工作的正确方法?我想知道不使用包装类的解决方案。

欢迎任何想法。

[更新]

我使用了 SJuan76 提出的解决方案:

如果需要,可以在 Guava 库中找到使用的比较器。