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

时间:2014-08-27 23:53:39

标签: java mapdb

所以我有一个大约2000万个键值对的列表,我将数据存储在几个MapDB中,以便看看它如何影响我的程序性能,以及实验。

问题是,将(以随机顺序)2000万个键值对插入mapdb需要花费大量时间。所以,我想对我拥有的键值对列表进行排序,以便我可以更快地插入它们,从而更快地构建数据库。

那么,我该怎么做呢?

我想学习如何为MapDB的BTreeSet和BTreeMap,或者使用单键值对的MapDB和对单个键具有多个值的MapDB这样做。

编辑: 我忘了提一下,键值对是String对象。

1 个答案:

答案 0 :(得分:2)

使用Build in Data Pump创建新的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()