2014-09-26 19 views
0

有两个应用程序(PHP - Symfony的2 - 学说2)他们每个人都有自己的PostgreSQL数据库。搜索两个独立的PostgreSQL数据库

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

  • 第二部分(P)位于其他地方 - 通常在客户的公司 - 而且包含了一些私人数据。该应用程序可以将这些私人数据分配给来自服务器的匿名数据。

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

我们可以:

  • 搜索上(P)
  • 发送的ID为(S)
  • (P),不能发送数据,因为是私人(仅标识),因此(S)部分不能对结果集进行排序,并且必须返回所有相关数据,不仅需要显示N个结果。
  • 完成结果在P部分设置和返回N个结果。

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

有什么办法如何从S同步搜索数据实时在P到一个地方进行搜索? (S上的数据可能会从不同的地方改变)。

有没有更好的办法解决这个问题?

回答

1

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

类似于dblink的其他选择是使用类似plproxy的东西,它应该是相当稳定的,因为它已被Skype使用。

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