Herhangi bir ORM çerçeveler cross-database/cross-server katılır destekliyor musunuz?

4 Cevap php

Ben iki sunucu var:

  • Server A: MySql
    • Table A
      • Anahtar-a
      • yabancı anahtar-b
  • Server B: MsSql
    • Table B
      • anahtar-b
      • foreign-Anahtar-a

Muhtemelen Ben ilişkileri ele yöntemleri ile iki nesne vardır:

TableA-> getRelatedTableB ();

TableB-> getRelatedTableA ();

Bu, çoğu ORMs uygulamak kolaydır. Ama ne veritabanı sunucusu başına sadece tek bir sorgu ile nesnelerin büyük bir set almak istiyorsanız? İdeal çerçeve bu ve mutlaka mantıklı geliştirici o veritabanı (ler) hakkında hiçbir şey bilmiyor iddia böylece soyut katılacaktı. Gibi bir şey:

FinderObject-> getAlotOfTableAObjectsWithTableBAlreadyLoaded ()

ve her veritabanı üzerinde bir sorgu gerçekleştirmek ve mantıklı bazı verimli bir şekilde sonuçlarını katılacak.


Herkes Doktrin veya başka bir php ORM çerçevesinde uygulamak için bir yol biliyor mu?

4 Cevap

Doktrin açıkça cross-database katılır desteklemiyor, ancak bunu yapmak için bir yol vardır:

http://www.doctrine-project.org/blog/cross-database-joins

Bunun için bir çözüm federated tables kullanmak için, ama bu iyi bir performans değil, sahip olduğunu okudum. Tüm bunu kullanmak için gereken ne bağlıdır.

I don't know of any that do... BUT maybe you could use Propel, Memcached, and MySQL together. Setup a distributed memory cache using Memcached, and see if there's a way to store some MySQL data in there. Because Memcached is distributed, both of your MySQL servers could store data there. Then you'd have to find a way to access that memory (via Memory Tables?). Seems a very tricky situation.

Belki de sorun yanlış yönde yaklaştı ediliyor. Eğer çözmeye çalıştığınız sorun bize söyleyebilir misiniz? Köşede tamamen farklı (ve basit!) Bir çözüm olabilir.