Pregunta

¿Cuáles son sus métodos para vincular datos distribuidos en arquitecturas de bases de datos múltiples (piense en MySQL vs PostgreSQL, etc.) en una sola aplicación?

¿Crearías tablas / matrices gigantes para unir contenido entre sí? ¿Hay otras opciones más efectivas y que consuman menos memoria para hacer esto?

Si tuviera que usar datos de un MySQL & amp; Fuente de PostgreSQL, sin forma de convertir una base de datos a la otra (restricciones de la aplicación, falta de tiempo, falta de conocimiento, ...), ¿cómo lo haría?

¿Fue útil?

Solución

Al menos en el caso de MySQL, puede utilizar datos de múltiples bases de datos en una sola consulta de todos modos, siempre que las bases de datos estén alojadas en la misma instancia de MySQL Server. Puede distinguir tablas de diferentes bases de datos calificando la tabla con un nombre 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);

En PostgreSQL, también puede calificar referencias de tabla con un nombre de esquema. Sin embargo, no estoy seguro de si puede crear restricciones de clave externa en las bases de datos.

Otros consejos

SQL Relay u otro proxy sql. http://sqlrelay.sourceforge.net/

Si está buscando crear restricciones en los RDBMS, no puede hacerlo.

Estoy enfrentando el mismo problema al ejecutar parte de una aplicación fuera de PostgreSQL para saber dónde se beneficiará, y el resto de MySQL donde es mejor.

Estoy haciendo múltiples inserciones con el mismo formato de información primaria (en mi caso, un ID de usuario genérico), así que dejo que la aplicación maneje la lógica de asegurarse de pedir el mismo ID a ambos DB.

No hay realmente una manera limpia de hacer esto fuera de abstraerlo a una clase o función de utilidad, sin embargo, que he encontrado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top