私は、大きなデータセットへの高速読み取り専用アクセスを必要とするWeb APIを設計しています。このデータセットは、常に保存され、アクセスできる状態になっていることを願っています。アクセスは静的クラスから行われ、データに対していくつかの超高速ルックアップを実行します。
したがって、を事前にキャッシュしたいと思いDictionary<string,Dictionary<string,Dictionary<string,myclass>>>
ます。第3レベルのディクショナリの要素の総数は約100万で、最終的には増加しますが、これまでに200万を超えないようにします。'myclass'は、文字列の(小さな)リスト、int、enum、および2つのboolを備えた小さなクラスであるため、大きなものはありません。メモリ内で100MBを少し超えるはずです。
私の知る限り、これを行う方法は、StaticClass.Load()メソッドを呼び出して、Global.asaxのApplication_Startイベントを含むファイルからこのすべてのデータを読み込むことです。
これで何を考えたり心配したりする必要があるのだろうか。Load()を呼び出して、将来のアクセスのためにすべてがOKであると仮定するのと同じくらい簡単ではないと思います。APIが数時間ヒットしなくても、GCはデータをそこに残すことを知っていますか?
厄介なことに、このデータも毎日リロードしたいと思います。古いデータセットを破棄して、別のファイルから新しいデータセットを読み込むことができると思いますが、後でそれについて説明します。
乾杯