Ich habe zwei Servern:Unterstützen ORM-Frameworks datenbankübergreifende/cross-Server-Joins?
- Ein Server: ein Schlüssel-MySql
- Tabelle
- Fremdschlüssel-b
- Tabelle
- Server B: MsSql
- Tabelle B
- Schlüssel-b
- Fremdschlüssel-a
- Tabelle B
Vermutlich habe ich zwei Objekte mit Methoden, die die Beziehungen Griff:
TabelleA-> getRelatedTableB();
TabelleB-> getRelatedTableA();
Dies ist in den meisten ORMs einfach zu implementieren. Aber was, wenn ich eine große Menge von Objekten mit nur einer Abfrage pro Datenbankserver bekommen möchte? Idealerweise würde das Framework dies abstrahieren und den logischen Join durchführen, so dass der Entwickler so tun könnte, als wüsste er nichts über die Datenbank (en). Etwas wie:
FinderObject-> getAlotOfTableAObjectsWithTableBAlreadyLoaded()
und es würde eine Abfrage auf jeder Datenbank durchführen und logisch die Ergebnisse in irgendeiner Art und Weise effizient verbinden.
Kennt jemand eine Möglichkeit, dies in Doctrine oder einem anderen PHP-ORM-Framework zu implementieren?
Ihr Ansatz klingt interessant, obwohl ich noch nie Memcached verwendet, so konnte ich nicht wirklich sprich, wie machbar es wäre. Ich schreibe eine Anwendung, die Daten aus zwei Datenbanken benötigt, die auf zwei verschiedenen physischen Servern mit verschiedenen Datenbanksystemen (mysql, mssql) existieren. Ich sollte erwähnen, dass ich die Datenbanken nicht "besitze" und daher nicht verändern oder verschieben kann. Ich habe einen Ansatz in Betracht gezogen, bei dem ich die Daten im Stapel verarbeiten kann, um sie in einem dritten lokalen Datenspeicher zu speichern, in dem meine Anwendung ausgeführt werden würde. Nicht in Frage, aber es gibt Bedenken, dass die Daten veralten. –
Wenn man die DBs nicht besitzt, ist es sicherlich schwierig. Sie könnten die Replikationsdateien analysieren und sie alle in Ihre eigene 3. Datenbank einfügen, die beide Datensätze enthält. Wird aber ein Wartungs-Albtraum sein, wenn sich die Schemata ändern. Viel Glück! –