搜索两个独立的PostgreSQL数据库

时间:2014-09-26 15:52:49

标签: php sql postgresql

有两个应用程序(PHP - Symfony 2 - Doctrine 2),每个应用程序都拥有自己的PostgreSQL数据库。

  • 第一个是中央服务器(S),位于我们的位置。它包含来自客户的匿名数据。

  • 第二部分(P)位于其他地方 - 通常位于客户的公司 - 并包含一些私人数据。该应用程序能够将此私人数据分配给服务器的匿名数据。

我们需要根据存储在P和S上的列来搜索和排序数据。问题是,我们无法将私有数据发送到服务器。数据绑定不是1:1。 (P)部分上的一行可以分配给服务器(S)上的一行或多行。

我们可以:

  • 搜索(P)
  • 将ID发送到(S)
  • (P)不能发送数据,因为它们是私有的(只有ID),因此(S)部分无法对结果集进行排序并且必须返回所有相关数据,而不仅仅是N我们需要显示的结果。
  • 完成P部分的结果集并返回N个结果。

有没有办法如何在两个数据库上执行一个查询? DB-link不是一个选项 - 它对我们来说不够稳定。

有没有办法如何实时将搜索数据从S同步到P以在一个地方搜索? (关于S的数据可能会从不同的地方改变)。

这个问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

不确定为什么dblink对你来说不够稳定,但我可以想到其他一些可能的解决方案,一个是postgresql_fdw - http://www.postgresql.org/docs/current/static/postgres-fdw.html,基本上只是创建指向另一个服务器的外表。

类似于dblink的另一个选择是使用像plproxy这样的东西,它应该是非常稳定的,因为Skype使用它。

或者,你可以用londiste或slony复制你想要的特定数据。