在两个独立的PostgreSQL数据库上搜索


Searching on two separate PostgreSQL databases

有两个应用程序(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复制您想要的特定数据。