java - 如何对项目进行排序以便更快地插入 MapDB BTree?

标签 java mapdb

所以我有一个大约 2000 万个键值对的列表,并且我将数据以不同的方式存储在多个 MapDB 中,以了解它如何影响我的程序性能,并用于实验。

问题是,将 2000 万个键值对插入(以随机顺序)到 MapDB 需要相当多的时间。因此,我想对我拥有的键值对列表进行排序,以便可以更快地插入它们,从而更快地利用它们构建数据库。

那么,我该如何解决这个问题呢?

我想了解如何为 MapDB 的 BTreeSet 和 BTreeMap,或者使用单个键值对的 MapDB 和单个键具有多个值的 MapDB 执行此操作。

编辑: 我忘记说了,键值对是 String 对象。

最佳答案

使用Data Pump中的build来创建新的BTreeMap。它具有与记录数成线性的速度。即使数据不适合内存,它也会对数据进行排序。

Map newMap = db.createTreeMap("map")
    .pumpSource(randomIterator)  //source of data to import
    .pumpBatchSize(1000000)      //sort data from source, batch size must be set so it fits into memory
    .make()

关于java - 如何对项目进行排序以便更快地插入 MapDB BTree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25538711/

相关文章:

java - 任何人都可以建议 eclipse 工具来分析 java 内存使用情况

java - 无法执行 android :onClick - Parsing String to Double 的方法

Java servlet 发送选择值

java - 有没有办法从 hdfs 读取 mapdb map ?

database - mapdb如何持久化交叉重启

java - Hazelcast 和 MapDB——实现一个简单的分布式数据库

java - 最佳实践是在父类中使用 protected 对象,还是使用 protected /公共(public) getter 将其私有(private)化?

java - 无法访问jsp页面