Question

Quelles sont vos méthodes pour lier des données réparties sur plusieurs architectures de bases de données (pensez à MySQL vs PostgreSQL, etc.), dans une seule application?

Seriez-vous prêt à créer des tables de hachage / tableaux géants pour faire correspondre le contenu les uns aux autres? Existe-t-il d'autres options plus efficaces et moins gourmandes en mémoire?

Si vous deviez utiliser des données provenant à la fois de MySQL & amp; Le source PostgreSQL, sans aucun moyen de convertir un DB en un autre (contraintes d’application, manque de temps, manque de connaissances, ...), comment vous y prendrez-vous?

Était-ce utile?

La solution

Au moins dans le cas de MySQL, vous pouvez quand même utiliser les données de plusieurs bases de données dans une même requête, à condition que les bases de données soient hébergées par la même instance de serveur MySQL. Vous pouvez distinguer des tables de bases de données différentes en qualifiant la table avec un nom de schéma:

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

Dans PostgreSQL, vous pouvez également qualifier les références de table avec un nom de schéma. Je ne sais pas si vous pouvez créer des contraintes de clé étrangère sur plusieurs bases de données.

Autres conseils

Relais SQL ou un autre proxy SQL. http://sqlrelay.sourceforge.net/

Si vous souhaitez créer des contraintes entre les SGBDR, vous ne pouvez pas.

Je suis confronté au même problème avec l'exécution d'une partie d'une application à partir de PostgreSQL, pour les avantages qui en découlent, et pour le reste de MySQL, là où c'est mieux.

Je fais plusieurs insertions avec le même format d'informations primaires (dans mon cas, un ID utilisateur générique), je laisse donc l'application gérer la logique consistant à s'assurer que le même ID est demandé aux deux bases de données.

Il n'y a pas vraiment de moyen propre de le faire en dehors de l'abstraction d'une fonction de classe ou d'utilitaire que j'ai trouvée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top