如何按值对LevelDB进行排序

时间:2011-11-07 23:53:59

标签: c++ algorithm sorting external-sorting leveldb

我正在使用leveldb来存储记录(键值),其中键是64位哈希值,值是double。举一个类比:想想64位散列是客户的唯一ID,而双倍是账户余额(即他们账户中有多少钱)。我想按帐户余额对数据库进行排序,并首先列出帐户余额最高的客户。但是,数据库无法容纳到内存中,因此我必须使用其他方法对其进行排序,以便按帐户余额进行排序。

我正在考虑使用STXXL,但它要求我将数据库的副本复制到一个平面文件中,然后我可以使用STXXL进行外部排序(这会产生一堆较小的文件,对它们进行排序,然后将它们合并回另一个平面文件中)。是否有更好的方法对数据进行排序,还是应该使用STXXL排序?

1 个答案:

答案 0 :(得分:1)

你有几个条目?可以使用无符号的32位整数作为索引(允许4,294,967,296个索引),这可以用来识别如何对原始数组进行排序吗?

即。创建32位索引和帐户余额对,在余额上排序,然后使用32位索引计算原始数据应该在哪个顺序?