c++ - 如何按值对 LevelDB 进行排序

标签 c++ algorithm sorting external-sorting leveldb

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

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

最佳答案

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

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

关于c++ - 如何按值对 LevelDB 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044343/

相关文章:

python - 定义一个算法,它获取一个数字和一个列表,并根据数字与列表平均值的距离返回一个标量

algorithm - 如何计算树编辑距离?

database - 排序多个用户计划的算法或脚本

c++ - 将结构从结构数组传递给 pthread_create

c++ - C++ 中 strstr() 函数的时间复杂度、空间复杂度和算法是什么?

c++ - 我怎样才能克服 "unsafe"错误?

c# - C#中的自然数字排序

jquery数据表列排序不正确

c++ - 匿名命名空间内的 "using namespace"语句

c++ - Boost::bind 中占位符的作用如下例