Как отсортировать LevelDB по значению - PullRequest
3 голосов
/ 08 ноября 2011

Я использую leveldb для хранения записей (ключ-значение), где ключ - это 64-битный хэш, а значение - двойной. Чтобы сделать аналогию: представьте, что 64-битный хеш - это уникальный идентификатор клиента и двойная величина как остаток на счете (т. Е. Сколько денег у них на счете). Я хочу отсортировать базу данных по балансу счета и сначала перечислить клиентов с наибольшим балансом счета. Однако база данных не может поместиться в памяти, поэтому мне нужно использовать какой-то другой метод для ее сортировки, чтобы отсортировать по балансу счета.

Я рассматриваю возможность использования STXXL , но для этого требуется, чтобы я скопировал базу данных в один плоский файл, а затем я мог бы использовать STXXL для выполнения внешней сортировки (что могло бы создать кучу файлы меньшего размера, сортируйте их и затем объединяйте их в другой простой файл). Есть ли лучший подход к сортировке данных или я должен пойти с сортировкой STXXL?

1 Ответ

1 голос
/ 08 ноября 2011

Сколько у вас записей? Может ли 32-разрядное целое число без знака использоваться в качестве индекса (допускает 4 294 967 296 индексов), который можно использовать для определения способа сортировки исходного массива?

т.е. создать пары 32-битных индексов и остатков на счетах, отсортировать их, а затем использовать 32-битные индексы, чтобы определить, в каком порядке должны быть исходные данные?

...