0

次のようなディクショナリに格納された、かなり複雑なネストされた (参照オブジェクトを上下に呼び出す参照) オブジェクト (クラス) を持つプロジェクトがあります。

public static Dictionary<string, Object1> DObject { get; set; }

Object1 は複雑なクラスです。「住所録」や「人物情報」クラスとは違います。クラス自体には、配列、別のオブジェクトの辞書があります。これらのオブジェクトは、その上のクラスを参照します。

DObject のサイズはメモリ内で 1GB 以上になる可能性があるため、BinaryFormatter を使用してファイルにシリアル化します。このオブジェクトをロードする必要があるため、MemoryMappedFile を使用することを考えていました。新しいキーと値がディクショナリに追加される場合があります。オブジェクトには、より多くのデータ (追加/更新) などが含まれている可能性があります。MMF のサイズは変わりますか? メモリ マップ ファイルの DObject の特定のキーにアクセスするにはどうすればよいですか? メモリ内にハッシュテーブルのような検索メカニズムがあり、辞書のような特定のキーを見つけてその値を取得できますか? とにかく、このMMFはどのように機能しますか?

私の理想の考えは。ディスクに大きなファイルがあります (2GB 以上)。ディスクにメモリを保存するように、ディクショナリ内のオブジェクトをディスク上で高速に更新します。すべてが高速です。Key-Value ルックアップ。検索、値の編集、保存など...いつでもこの2GB以上のオブジェクトにすばやくアクセスする必要があります。WCF サーバーが再起動したら、この 2 GB 以上のサイズのオブジェクトにすばやくアクセスする必要があります。だから1)連載2)を考えていたわけです。MMF との間でロードおよび読み取りを行います。現時点での私の主な関心事は速度です。つまり、プロジェクトをデバッグするたびに、この 2GB のデータをゼロから再ロードすることはできません (時間がかかります)。

この状況をどのように処理すべきかについての提案、アイデア、および考え。

4

1 に答える 1