まず、アーキテクチャ的には、複数のデータベースリンクを介してデータをプルすることを含む設計にはかなり不安があります。最終的なソースが、ターゲットデータベースが直接接続できない古いバージョンのOracleであるため、中間バージョンのOracleを実行している中間データベースが使用された場合に実行されることを確認しました。しかし、それは実際には非常にまれです。
パフォーマンスの観点から、この種のアプローチは重大な問題があります。もちろん、データがネットワークを介して2回送信されるという問題があります。しかし、もっと心配なことに、あなたは難しい問題を抱えており、分散SQLステートメントを最適化し、それをほとんど手に負えないものにしています。基本的に、同じクエリでローカルデータとリモートデータをクエリしないことを保証するか、Oracleが愚かなクエリプランを決定した場合に結果として得られるパフォーマンスを維持する必要があります。この種のクエリを最適化することは最小限です。
そうは言っても、中間データベースには、データベースリンクを抽象化する同義語またはビューが必要です。だから
Aの場合:
- Bへのデータベースリンクを作成する
Bの場合:
- Cへのデータベースリンクを作成する
- 同義語
table
を作成する[email protected]
Aでは、次のことができます
SELECT *
FROM [email protected]