所以我有一个大约 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/