PHP / MySQL - 使用两个数据库,一个共享,一个本地应用程序实例

时间:2010-04-29 12:31:25

标签: php mysql

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

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

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

重写基础应用程序需要很长时间。我只能控制我正在编写的新模块。

理想的解决方案:有没有办法使用MySQL将2个数据库封装成一个名称?我不希望切换数据库连接或专门命名数据库来从我的SQL语句中查询。

应用程序使用数据库包装器,因此我能够以某种方式更改它,以便我可以无形地尝试读/写两个不同的数据库。

2 个答案:

答案 0 :(得分:2)

  

我不希望切换数据库连接或专门命名数据库来从我的SQL语句中查询。

这有什么问题?如果应用程序DB包装器是“面向对象的”(意味着它保留了连接句柄,你可以有两个或更多独立的DB包装器实例,即使这意味着两个连接),在我看来,最简单,最直接的解决方案就是拥有两个DB包装器实例。对应用程序知道和使用的本地数据库使用“default”,为共享数据库使用另一个实例。在进行查询时添加额外的数据库参数对我来说也没问题。

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

答案 1 :(得分:0)

通过思考,我自己提出了一个想法。 “共享”数据库更像是对应用程序的服务。因此,我不是直接从中检索数据,而是将其作为服务封装起来,并使用XML-RPC来检索数据。

相关问题