2

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

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

那么,我该怎么做呢?

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

编辑:我忘了提,键值对是字符串对象。

4

1 回答 1

2

使用内置数据泵来创建新的 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()
于 2014-09-16T09:48:21.490 回答