私は20人のユーザー(スキーマ)を持つOracleデータベースを持っています。これらのスキーマは、シノニムと外部キーを使用して編成されています。さて、私は、データの一部(1人のユーザ)をpostgreSQLデータベースに入れたいと思います。 問題の一部を解決するためにpostgreSQLからOracle(およびOracleからPostgreSQLへ)へのデータベースリンクを作成できますが、外部キーの問題(postgreSQLとOracleの間の外部キー)はどのように解決しますか。最善の方法は何ですか?PostgresデータベースとOracleデータベースを正しくリンクするには?
答えて
アプローチ(これは、OracleとPostgreSQLとの間の特定のリンクを作成に関するものではありませんが、それを回避する方法):
別々のデータベースとしてOracleとPostgreSQLのデータベースを考えてみましょう。つまり、2つのデータベースシステム間に重要な関係はありません。
両方のデータベース(動物など)によって参照される必要のあるデータ(*)は、キーの関係とデータの整合性を損なわないように両方のデータベースに表現することができます。すべてのデータを複製する必要はありませんが、すべての行が存在することを確認することができます。 2つのシステム間で共有データ(動物)を同期させます。
例:
PostgreSQLデータベース:
Animals: [id, name, bio, blobs, etc.]
Oracleデータベース:
Animals: [id, name]
Owners: [id, name]
AnimalOwners: [ownerId, animalId]
は通常、1つの主要なデータベースから動物のデータを管理したい、この場合には、私は、PostgreSQLを想定します。 PostgreSQLのAnimal行を更新するたびに、変更内容を(該当する場合)OracleのAnimalテーブルにコピーします。
(*)アソシエートを作成するときに、キーを忘れて、他のデータベースに必要な行が存在するかどうかを明示的にチェックすることもできます。また、ある時点で所有されていた動物の種類を取り除かないように注意する必要があります。
それは面白いです。私はPostgreSQLデータベースの独立性を保つため、リンクを全く作成しないという考えが好きです。私の視点を選択しなければならないことも事実です:私の先導的なデータベースを選択してください。 – gpasse
どのようにリンクしていますか? –
私はまだリンクを実装していません。私はdbリンクを考えていた。私はそれを可能にし、最初のステップをOracleからpostgreSQLへの完全な移行を開始するための解決策を見つけようとしています – gpasse
なぜ異なるスキーマのデータをリンクする必要がありますか? –