3

相互のデータにアクセスする必要がある一連の Oracle データベースがあります。これを行う最も効率的な方法は、データベース リンクを使用することです。いくつかのデータベース リンクを設定すると、最小限の手間で A から B にデータを取得できます。私にとっての問題は、密結合の設計になってしまい、1 つのデータベースがダウンした場合に、結合されたデータベース (またはおそらくそれらのデータベース上のアプリケーションの一部) が持ち込まれる可能性があることです。

Oracle データベース間でデータを共有するために、どのような代替アプローチを試みましたか?

いくつかの応答後に更新...

「マスターデータ」へのアクセスについては、レプリケーションについてはあまり考えていませんでした。たとえば、通貨換算レートを含む中央データベースがあり、そのレートを別のデータベース (アプリケーション) に取り込みたいとします。このような小さなデータセットの場合、igor-db による DB リンク上のマテリアライズド ビューの提案はうまく機能します。ただし、非常に大きなデータセットから動的にサンプリングしている場合、ローカルにキャッシュするオプションは難しくなります。これらの状況で、どのオプションを選択しますか。私は XML サービスについて疑問に思いましたが、tuinstoel (le dorfier の返信へのコメント) は、関連するオーバーヘッドについて正しく疑問を呈しました。

回答の要約...

全体として、igor-dbが最も近いと思うので、その答えを受け入れましたが、他の答えを引き出すために少し追加すると思いました。

私の目的では、データ レプリケーションのみを見ていますが、Oracle BASIC レプリケーション (ADVANCED とは対照的に) レプリケーションが私には適しているようです。マスター サイトでマテリアライズド ビュー ログを使用し、スナップショット サイトでマテリアライズド ビューを使用することは、優れた方法のように思えます。

これがオプションではない場合、おそらくデータ ボリュームが原因でテーブル全体のレプリケーションが問題になる場合は、メッセージング ソリューションが最も適切な Oracle ソリューションと思われます。Oracle Advanced Queuing は、メッセージング ソリューションをセットアップするための最も迅速で簡単な方法のようです。

最も望ましくないアプローチは、独自の XML Web サービスであるように思われますが、高度なキューイングの比較的容易さがオプションではない場合に限られます。

4

6 に答える 6

5

Streams は、Oracle のレプリケーション テクノロジーです。データベース リンクを介して MV を使用できます (したがって、データベース 'A' にはデータベース 'B' からのデータの実体化されたビューがあります。'B' がダウンした場合、MV は更新できませんが、データはまだ 'A' にあります)。 .

マイレージは、DB ボリューム、ボリュームの変更によって異なる場合があります...

于 2009-01-22T01:01:34.687 に答える
1

OPはより多くの情報を提供しました。彼は、データセットが非常に大きいと述べています。さて、大きいとはどのくらいの大きさですか?また、マスター テーブルはどのくらいの頻度で変更されますか?

マテリアライズド ビュー ログを使用すると、Oracle はマスター テーブルで行われた変更のみを伝達します。データを完全に更新する必要はありません。また、Oracle ストリームは変更内容を相手側に伝達するだけです。

ストレージの購入は安価なので、ローカル キャッシングはいかがですか? 独自のソリューションをプログラミングするよりもはるかに安価です。

データベースが利用できない場合、XML サービスは役に立たないので、なぜ役立つのか理解できません。Oracle には、レプリケーションのための多くのオプションがあります。

編集

私はxmlサービスを構築しました。それらは、明確なインターフェース (コントラクト) を使用して、異なるシステム間の相互運用性を提供します。C# で xml サービスを構築し、Java でサービスを利用できます。ただし、xml サービスは高速ではありません。

于 2009-01-24T09:43:25.837 に答える
1

複数のデータベースへの同時同期アクセスが必要な場合、定義上、密結合されているように見えます。

たとえば、これがデータの転送に関するものであり、非同期である可能性がある場合は、2 つの間にメッセージ キューをインストールし、ソースからの読み取りとシンクへの書き込みの 2 つのプロセスを持つことができます。

于 2009-01-21T23:31:27.180 に答える
1

アドバンスト キューイングを使用しないのはなぜですか? Oracle インスタンス間でメッセージ (DML) を移動するために独自の XML サービスをロールバックする理由 - それは既に存在します。両方のインスタンスが稼働している場合、メッセージをあるインスタンスから別のインスタンスに伝播させることができます。宛先サーバーで必要に応じて処理できます。AQ のセットアップと使用は実に簡単です。

于 2009-01-26T18:55:02.497 に答える
0

どのような即時性が必要で、どの程度の双方向性が必要ですか? データが少し古い可能性があり、1 つの「マスター ソース」からプルできる場合は、スケジュールに従って実行される一連の単純な ETL スクリプトを作成して、「ソース」データベースから他のデータベースにデータをプルします。

次に、データの構造を調整して、クライアント データベースのニーズをより正確に満たすことができます。また、ソース データの構造を、顔が青くなるまで変更することができます。

于 2009-01-26T19:20:52.273 に答える