巨大なバイナリファイル(200GBを超えるもの)を解析できるNode.jsモジュールを作成したいと思います。各ファイルはチャンクに分割され、各チャンクは10GBを超えることができます。私は、ファイルを読み込むためにフローティングと非フローティングの方法を使用しようとしましたが、問題は、チャンクを解析中に読み込みバッファの終わりに達したため、次のonData
イベントが発生する前にそのチャンクの解析を終了する必要があります。これは私が試したものです:Node.jsの膨大なバイナリファイルの解析
私は8GBのRAMしか持っていないので、チャンク全体をプロセスメモリに読み込むことはできません。ストリームからデータを同期的に読み取るにはどうすればいいですか?またはバッファの末尾に達したときにparseChunk
の機能を一時停止し、新しいデータが利用できるようになるまで待機するにはどうすればよいですか?
ストリームを使用すると、読み込み/書き込みとバッファリングがストリームに切り替わります。しかし、あなたは正確に何が読み込まれているのかを正確にコントロールしたいと思うようです。あなたが完全に制御していないストリームがなければ、ディスクから直接読んでほしいバイト数を正確に読み取るのはなぜですか? – jfriend00
@ jfriend00。これらのファイルは私のハードディスク上にある必要はないからです。ストリームは、サーバーファイル、他のプロセスメモリの一部または一部のバッファから取得できます。 –