大丈夫。そのため、さまざまな長さの一連のファイル (たとえば 5000) に分散された非常に大量のバイナリ データ (たとえば 10GB) があります。
このデータを処理する Java アプリケーションを作成しており、データ アクセスの優れた設計を導入したいと考えています。通常、次のようなことが起こります。
- いずれにせよ、処理中にすべてのデータが読み取られます。
- 各ファイルは (通常) 順次読み取られ、一度に数キロバイトしか必要としません。ただし、たとえば、各ファイルの最初の数キロバイトを同時に、または各ファイルの中間の数キロバイトを同時に持つ必要があることがよくあります。
- アプリケーションがあちこちで 1 ~ 2 バイトへのランダム アクセスを必要とする場合があります。
現在、RandomAccessFile クラスを使用して、バイト バッファー (および ByteBuffers) に読み込みます。私の最終的な目標は、データ アクセスを何らかのクラスにカプセル化して高速化し、二度と心配する必要がないようにすることです。基本的な機能は、指定されたファイルからデータのフレームを読み取るように要求することです。上記の考慮事項を考慮して、I/O 操作を最小限に抑えたいと考えています。
一般的なアクセスの例:
- すべてのファイルの最初の 10 キロバイトをください!
- ファイル F のバイト 0 から 999 まで、次にバイト 1 から 1000 まで、次に 2 から 1001 まで、などなど...
- ファイル F の何メガバイトから何メガバイトのデータをください!
良いデザインの提案はありますか?