J'ai deux serveurs:Est-ce que les structures ORM prennent en charge les jointures inter-base de données/inter-serveur?
- Serveur A: MySql
- Tableau A
- clé un
- -clé étrangère b
- Tableau A
- serveur B: MsSql
- Tableau B
- clé b
- foreign-key-a
- Tableau B
On peut supposer que j'ai deux objets avec des méthodes qui gèrent les relations:
TableA-> getRelatedTableB();
TableB-> getRelatedTableA();
Ceci est facile à implémenter dans la plupart des ORM. Mais que faire si je veux obtenir un grand ensemble d'objets avec une seule requête par serveur de base de données? Idéalement, le framework devrait l'abstraire et faire la jointure logique pour que le développeur puisse prétendre qu'il ne sait rien de la ou des bases de données. Quelque chose comme:
FinderObject-> getAlotOfTableAObjectsWithTableBAlreadyLoaded()
et il effectuer une requête sur chaque base de données et rejoindre logiquement les résultats d'une certaine manière efficace. Est-ce que quelqu'un connaît un moyen de l'implémenter dans Doctrine ou dans une autre infrastructure PHP ORM?
Votre approche semble intéressant, mais je ne l'ai jamais utilisé memcached donc je ne pouvais pas vraiment parler de la faisabilité. J'écris une application qui nécessite des données provenant de deux bases de données qui existent sur deux serveurs physiques différents utilisant des systèmes de bases de données différents (mysql, mssql). Je devrais mentionner que je ne «possède» pas les bases de données et ne peux donc pas les modifier ou les déplacer. J'ai considéré une approche où je traite les données par lots pour les agréger dans un troisième magasin de données local où mon application serait exécutée. Pas hors de question, mais cela suscite des inquiétudes quant à la pérennité des données. –
Ne pas posséder les DBs le rend certainement difficile. Vous pouvez vous intéresser à l'analyse des fichiers de réplication et à leur insertion dans votre troisième base de données contenant les deux ensembles de données. Sera un cauchemar de maintenance cependant, comme les schémas changent. Bonne chance! –