1

私は、C# でメモリ内キャッシュを設計する最初の段階にいます (これは Windows サービスとして実行されます)。運用が開始されると、これは平均で 100 万近くのオブジェクト (さまざまなタイプ) を保持すると予想されます。一部のキャッシュ項目は、最大 10MB (またはそれ以上) のサイズになる場合があります。さまざまなデータ ストレージ ソリューションを検討した結果、DataTable または SQLite インメモリ インスタンスをキャッシュ ストアとして使用することにしました。この時点で私の質問は

  1. この多数のレコードで DataTable のパフォーマンスはどのようになると思いますか?
  2. SQLite ソリューションを使用するのはやり過ぎだと思いますか? (SQLite は「データベース」として設計されているため、これらのデータベース関連のすべての配管作業が実際には必要ない場合があります)。

パフォーマンスは私にとって最優先事項です。

編集

いくつかの詳細を追加します。

  1. これらのキャッシュ アイテムは単なるキーと値のペアではなく、(現在のところ) さらに 2 つのプロパティ (ピン留めされたアイテムとロックされたアイテム) があり、それらの可用性に影響を与える可能性があります。すべてのルックアップには、3 つのプロパティすべてが含まれます。
  2. Memcached も検討されていますが、現時点では、主に SLA の制約により、これはオプションではありません (これについて言えるのはそれだけです)。
  3. すべてのアイテムのサイズが 10MB であるとは限りません。
  4. これらの項目の多くは、単なる数値や小さな文字列の値になると確信しています。
  5. RAM の可用性は問題ではないと思います。

前もって感謝します、ジェームズ

4

2 に答える 2

2

1: ひどい。DataTbles は遅く、大きなアイテムに対して魔法のように変更されないメモリ ホグです。
2:教えてください。

簡単な辞書の使用を検討したことがありますか? キーと値のペアですね。

答えは、キャッシュをどうするかによって異なります。

于 2012-12-10T05:17:17.950 に答える
1

すべてのアイテムが1MBの場合、これは1TBのメモリです。
これに専用の1TBのメモリがありますか?
ソリッドステートディスク上のデータベースの方が優れた設計になる場合があります。

DataTableは大きくて遅いです。

どのようにアイテムを調べますか?
あなたは完全な鍵を持っているつもりですか?
あなたは十分な記憶を持っているつもりですか?
もしそうなら辞書。

于 2012-12-10T13:51:59.933 に答える