繁体   English   中英

是否有任何ORM框架支持跨数据库/跨服务器联接?

[英]Do any ORM frameworks support cross-database/cross-server joins?

我有两台服务器:

  • 服务器A:MySql
    • 表A
      • 外键-b
  • 服务器B:MsSql
    • 表B
      • 键b
      • 外键

大概我有两个带有处理关系的方法的对象:

TableA-> getRelatedTableB();

TableB-> getRelatedTableA();

这在大多数ORM中都很容易实现。 但是,如果我想在每个数据库服务器上仅通过一个查询获得大量对象,该怎么办? 理想情况下,框架将对此进行抽象并进行逻辑连接,以便开发人员可以假装自己对数据库一无所知。 就像是:

FinderObject-> getAlotOfTableAObjectsWithTableBAlreadyLoaded()

它将在每个数据库上执行查询,并以某种有效的方式将结果逻辑上合并。


有谁知道在Doctrine或其他PHP ORM框架中实现此目的的方法?

Doctrine不明确支持跨数据库联接,但是有一种方法可以做到:

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

解决此问题的一种方法是使用联合表 ,但我已经读到它的性能不好。 一切都取决于您需要如何使用它。

我不知道该怎么做...但是也许您可以一起使用Propel, Memcached和MySQL 使用Memcached设置分布式内存缓存,并查看是否有一种方法可以在其中存储一些MySQL数据。 由于Memcached是分布式的,因此两个MySQL服务器都可以在其中存储数据。 然后,您必须找到一种方法(通过Memory Tables)访问该内存。 似乎是一个非常棘手的情况。

也许是从错误的方向解决了问题。 您能告诉我们您要解决什么问题吗? 指日可待,可能会有一个完全不同的(并且更简单!)解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM