我有一个系统,其中有多个人造卫星创建财务交易,它们需要与核心服务器同步。这些附属服务器是运行带有本地Postgres数据库的Rails应用程序的远程服务器。核心是另一个具有自己的Postgres数据库的Rails应用程序。卫星和核心具有几乎相同的架构(但不完全相同)。一切都被容器化(应用程序和数据库)。核心服务器很少会更新所有卫星所需的一些数据。目前,我有一颗卫星,但是这个数字将增长到几颗(在不久的将来,我认为不会超过100颗)。核心与卫星之间没有顺序或争用的问题。核心永远不会更新与任何一个卫星相同的事务,并且任何卫星都不会与任何其他卫星更新相同的事务。更好的是,金融交易使用uuid作为主键。
由于这是一个多主机同步问题,所以我自然会遇到BDR。我有以下问题:
最佳答案
是的,用于BDR-Postgres 9.4的BDR 1.0可以投入生产且稳定。但是然后我会说since I work for 2ndQuadrant, who develop BDR。
它不是对独立PostgreSQL的直接替代,但是您可以在不更改应用程序的情况下使用它。请参见手册的概述部分。
他们都是不同的。不同的权衡。 BDR手册中对它们进行了一些讨论,但是当然要加一点盐,因为我们很难声称自己是公正的。
不,绝对不是。您在哪里看到了这一说法?
将来(但尚未发布)将发布一个扩展,以便在准备就绪时将BDR添加到PostgreSQL 9.6中。但是它不会成为PostgreSQL 9.6的一部分,而是您将其安装在顶部的东西。
是的,它可以很好地处理临时分区和网络中断,并在全局序列方面有一些警告。有关详细信息,请参见手册。
是的。有关复制集,请参见手册。
表结构始终被复制。当前的初始表内容也是如此。但是表更改可以选择性地逐表复制。
当然。
不太好。这是一种网状拓扑,期望每个卫星都可以与其他所有卫星通信。此外,每个节点您将有198个后端(99个walsenders + 99个应用程序 worker )。不漂亮。
您真的想要一个星型和星型模型,其中每个卫星仅与集线器通信。 BDR 1.0中不支持该功能,BDR 2.0中也不支持该功能。
我认为这是pglogical或Londiste的更好用例。
由于与我所参与的商业咨询服务重叠,因此我在这里无法真正详细介绍。我与之合作的团队将这些内容设计为professional service来为客户设计。