Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top