有两个应用程序(PHP-Symfony 2-Doctrine 2),每个应用程序都有自己的PostgreSQL数据库。
-
第一个是位于我们位置的中央服务器(S)。它包含来自客户的匿名数据。
-
第二部分(p)位于其他地方——通常在客户的公司中——并包含一些私人数据。该应用程序能够将此私人数据分配给来自服务器的匿名数据。
我们需要根据存储在p和S上的列对数据进行搜索和排序。问题是,我们无法将私人数据发送到服务器。数据绑定不是1:1。(P)部件上的一行可以分配给服务器(S)上的一个或多个行。
我们可以:
- 在(P)上搜索
- 将ID发送到(S)
- (P) 无法发送数据,因为它们是私有的(只有ID),所以(S)部分无法对结果集进行排序,必须返回所有相关数据,而不仅仅是我们需要显示的N个结果
- 完成P部分的结果集并返回N个结果
有没有办法在两个数据库上执行一个查询?DB链接不是一个选项-它对我们来说不够稳定。
有没有办法将搜索数据从S实时同步到p,以便在一个地方进行搜索?(S上的数据可能会从不同的地方更改)。
这个问题有更好的解决办法吗?
不确定为什么dblink对您来说不够稳定,但我可以想到其他几种可能的解决方案,其中一种是postgresql_fdw-http://www.postgresql.org/docs/current/static/postgres-fdw.html,基本上只是创建指向其他服务器的外部表。
类似于dblink的另一种选择是使用类似plproxy的东西,考虑到Skype使用它,它应该非常稳定。
或者,您可以使用londiste或slony复制您想要的特定数据。