使用可能なメモリ (数十ギガバイト) よりも大きく、可変長レコードを含むテキスト ファイルを並べ替えるための適切なアルゴリズムは何ですか? 私が見たすべてのアルゴリズムは、1) データがメモリに収まる、または 2) レコードが固定長であると想定しています。しかし、"BirthDate" フィールド (4 番目のフィールド) で並べ替えたい大きな CSV ファイルを想像してみてください。
Id,UserId,Name,BirthDate
1,psmith,"Peter Smith","1984/01/01"
2,dmehta,"Divya Mehta","1985/11/23"
3,scohen,"Saul Cohen","1984/08/19"
...
99999999,swright,"Shaun Wright","1986/04/12"
100000000,amarkov,"Anya Markov","1984/10/31"
そんなこと知ってる:
- これは1台のマシンで実行されます (分散されていません)。
- これを実行するマシンには、複数のプロセッサが搭載されています。
- 並べ替えるファイルは、マシンの物理メモリよりも大きくなる可能性があります。
- ファイルに可変長の行が含まれています。各行は固定数の列 (区切り文字で区切られた値) で構成されます。ファイルは特定のフィールド (つまり、ファイルの 4 番目のフィールド) でソートされます。
- 理想的な解決策は、おそらく「この既存の並べ替えユーティリティを使用する」ことですが、最適なアルゴリズムを探しています。
- 完全にコード化された実用的な答えは期待していません。「これをチェックしてください。これがどのように機能するか、またはこの問題でうまく機能する理由は次のとおりです」という行に沿ったものです。どこを見たらいいのかわからない…
- これは宿題じゃない!
ありがとう!♥</p>