読み書き用のメイン RDBMS として Oracle を使用していますが、memcache として使用できる map-reduce があるため、couchbase をキャッシュ レイヤーとして使用したいと考えています。Oracleが更新または挿入されたときに、それをどのように実装できるか、およびキャッシュレイヤーでデータを転送および更新する方法についてのアイデア.
3 に答える
あなたの質問はデータベースの同期に関するものだと思います。これは、DB の依存関係と、couchbase が提供するかどうかはよくわからない「ライトスルー」機能を組み合わせて使用することで実現できます。したがって、DB 依存関係を使用すると、Db アイテムに依存するアイテムがキャッシュされ、DB アイテムが更新または削除されると、キャッシュ内の対応する依存アイテムが削除され、同時にサーバー レベルで実行される「ライトスルー」ハンドラーを作成できます。 ; このハンドラの主な目的は、削除されたアイテムの新しいコピーをキャッシュにロードすることです。したがって、基本的には、ハンドラーを 1 回記述してキャッシュ サーバーに登録すると、同期が必要なときにキャッシュ サーバーがそれを実行します。キャッシュを使用して DB 内の新しいアイテム。Db 同期に関するこの読み取りは、役立つ場合があります。
したがって、あなたの質問はCouchbaseに直接関係していませんが、データがOracleインスタンスに変更されたときにアラートを受け取る方法について他の人が述べたように.
あまり知られていないことの 1 つは、このために非常に優れた Oracle データベース変更通知機能です: http://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgnf.htm
したがって、変更をリッスンし、データを Couchbase にプッシュするアプリケーションを作成できます。
現在のパフォーマンスの問題について何も語っていません。
RDBMS/SQL 機能をあまり活用していないアプリケーションが多すぎます。特に ORM が間にある場合はそうです。
解決策は、データベースの上に別のキャッシュを配置し、IP マルチキャスト (SwarmCache など)、メッセージ キュー (JMS)、または夜間のインポート ジョブを使用して手動でクラスター内でこれを同期することです。最終的にはさらに多くの問題を引き起こす可能性があります。また、システムの複雑さが増します。
したがって、あなたの質問に対する私の答えは次のとおりです。データモデルやクエリに関して改善の余地がある限り、私はそれをしません。