0

PC に接続された別のデバイスからストリーミング (800Mb/s) されている非常に大量のデータ (>500GB) を保存する必要があります。MySQl/ISAM などのデータベースの使用は速度が制限されており、「C」stdio ファイル lib (つまり、fopen/fclose/fwrite) の上にある高速で軽量なライブラリを探しています。これにより、書き込み/読み取りが可能になります。非常に大きなファイル (利用可能なディスク容量まで)。

バックグラウンドで、大きなファイルを 1GB などの小さなファイルに分割することができます。API でこれらの詳細を処理する必要があります。

データは圧縮されたバイナリ形式で PC に到着し、ハードディスクに書き込む前にそれ以上の処理は必要ありません。

ライブラリは Windows と Linux で動作するはずです。

4

2 に答える 2

1

データへのランダム アクセスが必要な場合は、メモリ マップ ファイルを参照してください。

これにより、明示的にメモリを割り当ててデータを読み取ることなく、ファイル (またはファイルのセクション) を透過的にメモリにマップできます。Windows/Linux で動作します (違いをラップするブースト ライブラリがあります)。

Windows では、ファイルに複数のウィンドウを使用することで、32 ビット OS で >>4gb のファイルを処理できます。

編集:申し訳ありませんが800Mb / s !! それに対応できるディスクは知りません。SSD ドライブの RAID アレイを見ているかもしれません。
以前は、接続されたドライブをファイルシステムのない単純な一連のバイトとして使用して、非常に高速で持続的な書き込みを行うイメージ キャプチャ カードがありました。そのようなものが必要になるかどうかはわかりません。

于 2010-01-19T05:45:52.123 に答える
0

究極の速度を得るには、プラットフォーム固有の高度にすることをお勧めします。

目的は、入力デバイスをハード ドライブに直接接続できるようにすることです。1 つの方法は、ハード ドライブに直接書き込む入力デバイス用のドライバーを作成することです。

一般的なアルゴリズムでは、非常に大きな循環バイト バッファーを使用するか、複数のバッファーを使用します。入力デバイスと出力デバイスの間の速度差を補うために余分なスペースが必要です。入力デバイスがノンストップである場合。

入力デバイスを一時停止できれば、問題はより簡単になります。

于 2010-01-19T21:21:20.057 に答える