2

複数のデータベース アーキテクチャ (MySQL と PostgreSQL など) にまたがるデータを単一のアプリケーションにリンクする方法は何ですか?

コンテンツを相互に照合するために巨大なハッシュテーブル/配列を作成しますか? これを行うための、より効果的でメモリ消費の少ない他のオプションはありますか?

MySQL と PostgreSQL の両方のソースからのデータを使用し、一方の DB を他方の DB に変換する方法がない場合 (アプリケーションの制約、時間の不足、知識の不足など)、どのように対処しますか?

4

3 に答える 3

2

SQL リレーまたは別の SQL プロキシ。 http://sqlrelay.sourceforge.net/

于 2009-04-27T03:51:14.257 に答える
1

少なくとも 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 では、テーブル参照をスキーマ名で修飾することもできます。ただし、データベース間で外部キー制約を作成できるかどうかはわかりません。

于 2009-03-11T23:03:47.530 に答える
0

RDBMS 間で制約を作成しようとしている場合は、できません。

私は、アプリケーションの一部を PostgreSQL から実行することで同じ問題に直面しています。

同じ形式のプライマリ情報 (私の場合は一般的なユーザー ID) をキーにして複数の挿入を行っているため、両方の DB から同じ ID を確実に要求するロジックをアプリケーションに処理させています。

ただし、クラスまたはユーティリティ関数に抽象化する以外に、これを行う明確な方法はありません。

于 2009-09-16T04:23:47.773 に答える