各行に UUID を持つ 2 つのファイルがあります。各ファイルには数十万行あります (データベース ダンプから生成されます)。これらのファイルを並べ替えて、相違点を見つける必要があります (追加/削除)。これは、いくつかの *nix ツールを使用して簡単に実行でき、数秒しかかかりません。
$ sort file-a.txt > file-a-sorted.txt
$ sort file-b.txt > file-b-sorted.txt
$ diff file-a-sorted.txt file-b-sorted.txt
ただし、この機能を、マルチプラットフォームでの使用を目的とした (Node 上に構築された) CLI に追加したいと考えています。したがって、サブプロセスを生成してこれらのツールに委任することはオプションではありません。
「愚か」で各ファイルをメモリにロードし、改行で分割し.sort()
、結果の配列を呼び出すと、驚くほどうまく機能します(かなり多くのメモリを使用しますが、高速です...)が、違いを見つけるのはかなり難しいことが証明されています.
答えはストリームの領域のどこかにあると確信していますが、ストリームを操作した経験がないため、どこから始めればよいかわかりません。
Node.js を使用してこのような大きなファイルをロード、ソート、および比較する効率的な手法は何ですか?
私は完全な解決策を探しているわけではありません (ただし、お気軽に!)、この段階ではポインタだけが本当に役に立ちます。
ありがとう!