Связывание информации из нескольких баз данных - PullRequest
2 голосов
/ 12 марта 2009

Каковы ваши методы объединения данных, распределенных по нескольким архитектурам баз данных (например, MySQL против PostgreSQL и т. Д.), В одно приложение?

Будете ли вы создавать гигантские хеш-таблицы / массивы для сопоставления контента друг с другом? Есть ли другие, более эффективные и менее потребляющие память варианты для этого?

Если бы вы использовали данные как из источника MySQL, так и из PostgreSQL, без возможности преобразования одной БД в другую (ограничения приложения, нехватка времени, нехватка знаний, ...), как бы вы поступили?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2009

SQL Relay или другой sql прокси. http://sqlrelay.sourceforge.net/

1 голос
/ 12 марта 2009

По крайней мере, в случае MySQL вы можете использовать данные из нескольких баз данных в одном запросе в любом случае, при условии, что базы данных размещены на одном и том же экземпляре MySQL Server. Вы можете отличить таблицы от разных баз данных, указав в таблице имя схемы:

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 вы также можете указывать ссылки на таблицы с помощью имени схемы. Однако я не уверен, что вы можете создать ограничения внешнего ключа для баз данных.

0 голосов
/ 16 сентября 2009

Если вы хотите создать ограничения для СУРБД - вы не можете.

Я сталкиваюсь с той же проблемой при запуске части приложения из PostgreSQL, где это будет полезно, и остальной части MySQL, где это лучше.

Я выполняю несколько операций вставки с ключом одного и того же формата первичной информации (в моем случае это общий идентификатор пользователя), поэтому я позволяю приложению обрабатывать логику того, чтобы запрашивать один и тот же идентификатор у обеих БД.

Однако на самом деле не существует чистого способа сделать это, кроме абстрагирования его от класса или служебной функции.

...