如何按值对 LevelDB 进行排序

Kir*_*ril 5 c++ sorting algorithm external-sorting leveldb

我使用leveldb来存储记录(键值),其中键是 64 位哈希值,值是双精度值。打个比方:将 64 位哈希视为客户的唯一 ID,并将其作为帐户余额(即他们的帐户中有多少钱)。我想按帐户余额对数据库进行排序,并首先列出帐户余额最高的客户。但是,数据库无法装入内存,因此我必须使用其他方法对其进行排序,以便按帐户余额进行排序。

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

Jon*_*age 1

您有多少条目?是否可以使用无符号 32 位整数作为索引(允许 4,294,967,296 个索引)来确定如何对原始数组进行排序?

即创建成对的 32 位索引和帐户余额,对余额进行排序,然后使用 32 位索引计算出原始数据应采用什么顺序?