如何使一个heroku数据库实例跟随多个父数据库?

时间:2013-05-07 23:22:00

标签: postgresql heroku

我目前有两个SOA应用程序(soa1和soa2),每个都有自己的数据库。我想创建第三个应用程序(report1),它以某种方式合并这些数据库并提供报告。我在想,如果我能让soa1和soa2使用WAL-E,那么report1可能会成为一个读取奴隶,我可以使用多租户解决方案。

我希望在soa1和soa2之间加入数据,因此在单个查询中访问这两个数据非常重要。

我认为有三种方法可以做到这一点

  1. 将我的数据库从heroku中取出,自行设置三个数据库(ick)
  2. 在heroku上神奇地拥有一个数据库实例,请关注soa1和soa2
  3. 保留所有内容,并使用CTE(也是ick)
  4. 将数据注入查询

    我甚至不知道我是否可以在不同的模式下将两个单独的WAL读入数据库...但如果可以的话,我认为我必须使用选项1,因为我认为heroku不会支持我想做的事情......

    除非所有这些,否则有没有人对如何实现这一点有任何其他想法?

1 个答案:

答案 0 :(得分:3)

使用PostgreSQL的内置二进制复制不能做到这一点。它不能合并多个归档流,也不太可能这样做。

我们正在进行可以执行此操作的逻辑复制(我现在正在测试它)但它需要PostgreSQL的补丁,并且在PostgreSQL 9.4之前将无法使用未修补的PostgreSQL(9.3即将推出)。

与此同时,您可以使用Bucardo,Slony-I等基于触发器的复制解决方案来实现此类任务。这可能对Heroku构成挑战,因为您无法直接在Heroku数据库实例上运行自己的进程;您可能必须从您自己的服务器远程运行复制代理。