マルチデータベース情報のリンク
-
10-07-2019 - |
質問
複数のデータベースアーキテクチャ(MySQLとPostgreSQLなど)にまたがるデータを単一のアプリケーションにリンクする方法は何ですか?
コンテンツを互いに照合するための巨大なハッシュテーブル/配列を作成しますか?これを行うための、より効果的でメモリ消費の少ない他のオプションはありますか?
MySQL&の両方のデータを使用する場合1つのDBを別のDBに変換する方法がない(アプリケーションの制約、時間の不足、知識の不足など)PostgreSQLソース、どうすればよいですか?
解決
少なくともMySQLの場合、データベースが同じMySQL Serverインスタンスによってホストされている場合、1つのクエリで複数のデータベースのデータを使用できます。テーブルをスキーマ名で修飾することにより、テーブルを異なるデータベースから区別できます。
CREATE TABLE test.foo (id SERIAL PRIMARY KEY) TYPE=InnoDB;
CREATE DATABASE test2;
CREATE TABLE test2.bar (foo_id BIGINT UNSIGNED,
FOREIGN KEY (foo_id) REFERENCES test.foo(id)) TYPE=InnoDB;
SELECT * FROM test.foo f JOIN test2.bar b ON (f.id = b.foo_id);
PostgreSQLでは、テーブル参照をスキーマ名で修飾することもできます。ただし、データベース間で外部キー制約を作成できるかどうかはわかりません。
他のヒント
SQLリレーまたは別のSQLプロキシ。 http://sqlrelay.sourceforge.net/
RDBMS全体に制約を作成しようとしている場合、できません。
私は、PostgreSQLの利点のある場所でアプリケーションの一部を実行し、MySQLの残りの部分を実行するという同じ問題に直面しています。
同じ形式のプライマリ情報(私の場合は一般的なユーザーID)をキーとする複数の挿入を実行しているため、両方のDBに同じIDを要求するロジックをアプリケーションに処理させています。
しかし、クラスまたはユーティリティ関数に抽象化する以外にこれを行うきれいな方法はありませんが、私はそれを見つけました。