OSCacheからEhCacheにプロジェクトコードを移行しようとしています。グローバルEhCache容量を指定する
OSCacheは、第2レベルのHibernateキャッシュプロバイダとしてだけでなく、異なる性質の他のオブジェクトを格納するためにも使用されています。彼らは、重複していないキャッシュキーのために、衝突なしで同じキャッシュインスタンスを喜んで共有しました。
EhCacheに移行する際の大きな違いは、各領域に異なるキャッシュインスタンスがあることです。異なる性質のデータが別々に存在するため、ルックアップの速度を向上させることができるため、潜在的に優れています。残念なことに、これは設定地獄の価格があります。私に説明させてください。
OSCacheの世界では、キャッシュ容量を10000とすることにしました。今は特定のインストールで必要とするRAM容量が増えれば、50000まで簡単に増やすことができます。今、EhCacheでは、すべての地域でこのデルタの一部分を使って設定を変更しなければなりません!
さらに、1つのインストールではXタイプのオブジェクトの使用率が高くなる可能性がありますが、別のインストールではYタイプのオブジェクトのチャーン率が高くなる可能性があります。数十のインストールがあり、インストールごとに数百の異なるキャッシュがあります。そのためには、キャッシュパターンを監視して設定を調整するだけで何もしないで、たくさんの人を雇う必要があります。
私はCacheManager
に何らかの種類のグローバルキャッシュ容量設定があると予想していましたが、各内部キャッシュはエントリの使用状況に応じて容量を増やすために戦うでしょう。しかし、私がキャッシュ容量を設定するために見つけた唯一の方法は、経由であり、これはCacheManager
に対して多対1です。
私が見ることのできる唯一の選択肢は、Hibernateにすべてのエンティティに対して1つのグローバルキャッシュを使用させようとすることです。誰もそれをする方法を知っていますか?私のシナリオには他にも優れたソリューションがありますか?
うわー、この回答のために非常に多くのおかげで、私は間違いなくクリスマス後にこの背中を見ているだろう。 – mindas