キー/値のキャッシュ機能を必要とするプロジェクトに取り組んでいますが、アプリケーションは、 ASP.NET Cache、memcached、AppFabricなどの業界標準のメモリキャッシュ方法をサポートしていない非常に限られた環境に存在します。
この制限のある環境で使用できる唯一のオプションは、MSSQLデータベースです。キー/値キャッシュのニーズを満たすために、単純なキー/値テーブルを作成する必要があります。ほとんどの場合、データをJSONとしてシリアル化しますが、キーに最適なデータ型が何であるかはわかりません。明らかに一意のキーである必要があり、キャッシュを取得および設定するプログラマーが読み取り可能である必要があります。また、「メモリ内」のキャッシュソリューションにアクセスできないため、パフォーマンスがすでに低下しているため、迅速に検索する必要があります。
私は主キー列をint値またはbigint値にすることに慣れています。この場合、すべてのクエリは次のようになるため、主キー(キャッシュキー)はcharまたはvarcharデータ型である必要があります。
SELECT value FROM CacheTable WHERE key = 'keyname'
md5ハッシュの使用に関する投稿も見ましたが、他の投稿では、ハッシュを信頼して一意のキーを常に生成することはできないと指摘されていました。私は基本的にデータ型に関するアドバイスを求めていますが、「key」列を主キーにするかどうか、またはintまたはbigint主キーを作成する必要があるかどうか(おそらく使用されない場合でも)。
最終的には、.NETのネイティブキャッシングと同様のキャッシングクラスを作成します。このクラスでは、次のようなデータベーステーブルからプルする静的クラスを作成できます。
CustomDatabaseCache.Set(string key, object value);
CustomDatabaseCache.Get(string key)