Oracleデータベースとのキャッシュデータ同期にInfinispanを使用できるかどうかを知りたい。これが私のシナリオです。私には2つの主要なアプリケーションがあります。1つは高度な同時使用アプリで、もう1つは管理モジュールとして使用されます。同時実行性が高いため、データベース接続を減らしたいと思います(エンティティをキャッシュにロードし(読み取り/書き込み可能)、データベースを呼び出さずにこの場所から使用します)。しかし、その間、管理モジュールはデータベースを直接使用しているため、キャッシュの変更に応じてデータベースを更新したいと思います。その更新プロセス(データベースへのキャッシュ)は、アプリケーションを使用せずにエンティティレベルで処理できますか?Infinispanがこのシナリオをサポートしているかどうかを教えてください。サポートがあればアイデアを共有してください。
2 に答える
はい、可能です。Infinispan はこのユースケースをサポートしています。
これは単純な構成の「問題」にすぎません。使用する必要があるのは、 で適切に構成された CacheStore だけpassivation disabled
です。これにより、キャッシュ (高度な同時実行アプリケーションで使用される) がデータベースと同期された状態が維持されます。
それは正確に何を引き起こしますか?
パッシベーションが無効になっている場合、要素が変更、追加、または削除されるたびに、その変更はキャッシュ ローダーを介してバックエンド ストアに永続化されます。エビクションとキャッシュのロードの間に直接的な関係はありません。エビクションを使用しない場合、永続ストアにあるものは基本的にメモリにあるもののコピーです。
ここでメモリとはキャッシュを意味します。これと他の興味深いオプションについてさらに知りたい場合は、https ://docs.jboss.org/author/display/ISPN/Cache+Loaders+and+Stores#CacheLoadersandStores-cachepassivation を参照してください。
たぶん、前述の立ち退きを検討する価値があります。無効にするか有効にするか。これは主に、並行性の高いアプリケーションによって生成される負荷に依存します。