Pergunta

Quais são seus métodos de vincular dados espalhados por vários bancos de dados arquiteturas (pense em MySQL vs PostgreSQL etc), em um único aplicativo?

Você criaria hashtables/matrizes gigantes para combinar conteúdo um contra o outro? Existem outras opções mais eficazes e menos consumidas pela memória para fazer isso?

Se você usasse dados de uma fonte MySQL e PostgreSQL, sem nenhuma maneira de converter um dB para o outro (restrições de aplicativos, falta de tempo, falta de conhecimento, ...), como você iria fazer isso?

Foi útil?

Solução

Pelo menos no caso do MySQL, você pode usar dados de vários bancos de dados em uma única consulta, desde que os bancos de dados sejam hospedados pela mesma instância do MySQL Server. Você pode distinguir tabelas de diferentes bancos de dados, qualificando a tabela com um nome de esquema:

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);

No PostgreSQL, você também pode qualificar referências de tabela com um nome de esquema. Não tenho certeza se você pode criar restrições de chave estrangeira entre os bancos de dados.

Outras dicas

Relé SQL ou outro proxy SQL.http://sqlrelay.sourceforge.net/

Se você deseja criar restrições nos rdbms - você não pode.

Estou enfrentando o mesmo problema com a execução de um aplicativo do PostgreSQL para onde ele se beneficiará e o restante do MySQL onde é melhor.

Estou fazendo várias inserções com o mesmo formato de informações primárias (no meu caso, um ID de usuário genérico), por isso estou deixando o aplicativo lidar com a lógica de garantir o mesmo ID dos dois DBs.

No entanto, não há uma maneira limpa de fazer isso fora de abstraí -lo a uma função de classe ou utilidade, que eu encontrei.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top