代码之家  ›  专栏  ›  技术社区  ›  Extrakun

php/mysql-使用两个数据库,一个是共享的,一个是应用程序实例的本地数据库[closed]

  •  0
  • Extrakun  · 技术社区  · 14 年前

    情况:使用现成的php应用程序,我必须添加一个新模块以获得额外的功能。今天,我们知道最终将部署应用程序的四个不同实例,但是来自新功能的数据将在这四个实例之间共享。每个实例都应该有自己的用户、内容等数据库。

    因此,新功能的数据进入“共享”数据库。 应用程序的数据(用户登录、内容、上传)进入“本地”数据库

    为了使事情更复杂,我正在编写的新模块将同时从本地数据库和共享数据库中获取数据。

    重新写入基本应用程序将花费太长时间。我只能控制我正在编写的新模块。

    理想的解决方案是:有没有办法使用mysql将两个数据库封装成一个名称?我不希望切换数据库连接,也不希望在我的sql语句中指定要查询的数据库的名称。

    应用程序使用了一个db包装器,因此我能够以某种方式对其进行更改,这样我就可以无形地尝试读/写两个不同的db。

    2 回复  |  直到 12 年前
        1
  •  2
  •   sbk    14 年前

    我不希望切换数据库连接,也不希望在我的sql语句中指定要查询的数据库的名称。

    怎么了?如果应用程序db包装是“面向对象的”(这意味着它保留了连接句柄,并且您可以有两个或多个db包装的独立实例,即使这意味着有两个连接),在我看来,最简单和最直接的解决方案就是在立场。对于应用程序知道并使用的本地数据库和共享数据库,请使用“默认”和另一个实例。在执行查询时添加额外的数据库参数在我看来也是可以的。

    如何将两个数据库封装为一个?假设的中间层如何知道哪些查询应该转到哪个数据库?即使您修改了db包装器,您如何想象它会判断哪个数据库是正确的?比如,有一个要查询db1的表名列表和一个要查询db2的表列表……不,引入一些神秘的规则很快就会变得混乱。

        2
  •  0
  •   Extrakun    14 年前

    仔细想想,我自己想出了一个主意。“共享”数据库更像是应用程序的服务。因此,我将把它封装为一个服务,并使用XML-RPC来检索数据,而不是直接从中检索数据。