Java Web アプリケーションのキャッシング ソリューションを探しています。Oracle db インスタンスと、db に対してリモートである 2 ~ 3 個のインスタンスがあります。データベースの応答時間を受け入れることができないため、データをアプリにローカルにキャッシュしたいと考えています。私たちのデータセットは平均的なサイズ (テーブルごとに数千行) であり、アプリケーションから手動で変更されます (それほど頻繁ではありません) (データベースへの直接アクセスはありません)。
そこで私たちが考えていたのは、必要なすべてのデータをローカルに保持できるソリューションです。データベースから取得してキャッシュに書き直すデータの量を減らしたいと考えています。
したがって、たとえば、1 つのエンティティが変更された場合、そのテーブルでキャッシュされたすべてのクエリを無効にするのではなく、キャッシュされたデータからクエリをローカルで実行できるように、ローカルでキャッシュされたクエリの結果セットを変更できるようにする必要があります。キャッシュは変更を複製する必要があります\データベースからアプリケーションの他のインスタンスによって変更されたデータを取得します.
Hibernate の第 2 レベルのキャッシュとして EhCache を検討してきましたが、テーブルを変更すると、特定のテーブルに対してキャッシュされたすべてのクエリが無効になります。Hibernate Services を簡単に調べてみましたが、必要に応じて休止状態の第 2 レベル キャッシュのデフォルト動作をオーバーライドできるかどうかはまだわかりません。
他に使用できるソリューションはありますか?
編集データへの非常に高速なアクセスが必要です。事実上、私たちが探しているのは、Quaryable キャッシュです。