1000 のトピックに関するリアルタイム データを受信するプログラムがあります。平均して 1 秒あたり 5000 件のメッセージを受信します。各メッセージは、トピックとメッセージ値の 2 つの文字列で構成されます。これらの文字列を、メッセージの到着時刻を示すタイムスタンプと共に保存したいと思います。
「Core 2」ハードウェアで 32 ビット Windows XP を使用し、C# でプログラミングしています。
このデータを 1000 ファイル (トピックごとに 1 つ) に保存したいと思います。多くの人がデータをデータベースに保存するように言いたがることは知っていますが、私はその道をたどりたくありません。
私はいくつかのアプローチを検討しました:
1) 1000 個のファイルを開き、データが到着したらそれぞれに書き込みます。これには2つの懸念があります。1000 個のファイルを同時に開くことができるかどうかはわかりません。また、これがディスクの断片化にどのような影響を与えるかもわかりません。
2) 1 つのファイルに書き込み、後でそれを処理して 1000 個のファイルを生成します。
3) 一日の終わりまですべてを RAM に保持してから、一度に 1 つのファイルに書き込みます。2 GB の制限を超えるには 64 ビットに移行する必要があるかもしれませんが、十分な RAM があればこれでうまくいくと思います。
この問題にどのように取り組みますか?