3

leveldbを使用してレコード(key-value)を格納しています。ここで、キーは64ビットハッシュで、値はdoubleです。例えれば、64ビットハッシュは顧客の一意のIDであり、アカウントの残高(つまり、アカウントにある金額)の2倍であると考えてください。データベースを口座残高で並べ替えて、口座残高が最も多い顧客を最初にリストしたいと思います。ただし、データベースはメモリに収まらないため、アカウントの残高で並べ替えるには、他の方法でデータベースを並べ替える必要があります。

STXXLの使用を検討していますが、データベースのコピーを1つのフラットファイルに作成する必要があります。その後、STXXLを使用して外部ソートを実行できます(これにより、多数の小さなファイルが作成され、ソートされてからマージされます)別の単一のフラットファイルに戻します)。データを並べ替えるより良い方法はありますか、それともSTXXL並べ替えを使用する必要がありますか?

4

1 に答える 1

1

エントリーはいくつありますか?符号なし32ビット整数をインデックスとして使用できますか(4,294,967,296インデックスを許可します)、元の配列を並べ替える方法を識別するために使用できますか?

つまり、32ビットインデックスと口座残高のペアを作成し、残高を並べ替えてから、32ビットインデックスを使用して、元のデータの順序を決定しますか?

于 2011-11-08T00:06:18.597 に答える