2011-09-14 7 views
1

私は8テラバイトのデータが〜5000配列の小さなサイズの要素で構成されています(要素あたり100バイト以下)。できるだけ早くアルゴリズムで使用するために、これらの配列のセクションを一度に数十megずつメモリにロードする必要があります。メモリマップされたファイルはこの用途に適していますか?メモリマップされたデータベース

+0

アクセスは主にランダムまたはシーケンシャルですか? –

+0

。また、実現可能であれば、私は複数のスレッドからクエリを行い、それらの最後に配列を拡張したいと思います。 – David

+0

インデックスや検索キー、ソートなどの高度なDB機能は必要ありませんか?これは基本的にシーケンシャルアクセスフラットファイルの問題ですか?そして、私はあなたがアプリケーションのニーズにきめ細かく対応し、汎用APIを作成する必要はありません。 –

答えて

1

あなたの要件が与えられれば、私は間違いなくメモリマップされたファイルに行きます。それはほぼ正確に作られたものです。また、メモリマップされたファイルは物理リソースをほとんど消費しないため、非常に大きなファイルは他の方法と比較してシステムにほとんど影響を与えません。特に、I/Oを実行する直前に小さなビューをアドレス空間にマップできます。要素)。もう一つの大きな利点は、彼らがあなたに最も簡単な作業環境を提供できることです。 (大部分は)大容量のメモリアドレス空間としてデータを見るだけで、WindowsがI/Oを気にすることができます。明らかに、複数のスレッドを処理するためのロック機構を構築する必要がありますが、わかっています。