2010-04-29 54 views
0

情况:使用现成的PHP应用程序,我必须添加一个新模块以提供额外的功能。今天,已经知道最终会部署四个不同的应用程序实例,但是新功能的数据将在这四个实例之间共享。每个实例仍然应该有自己的用户数据库,内容等。PHP/MySQL - 使用两个数据库,一个共享和一个本地应用程序实例

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

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

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

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

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

回答

2

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

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

你会如何将两个数据库封装成一个?假设的中间层如何知道哪些查询应该到哪个数据库?即使你修改了数据库封装器,你怎么想到它会确定哪个数据库是正确的?就像有一个表名来查询db1和一个查询db2的表的列表......那么,介绍一些神秘的规则很快就会变得麻烦。

+0

我同意。你可以像访问你的数据库:'$ db_primary-> query('...'); $ db_secondary->查询( '...');' – mattbasta 2010-07-22 22:43:03

0

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

相关问题