我有一个系统,其中有多个人造卫星创建财务交易,它们需要与核心服务器同步。这些附属服务器是运行带有本地Postgres数据库的Rails应用程序的远程服务器。核心是另一个具有自己的Postgres数据库的Rails应用程序。卫星和核心具有几乎相同的架构(但不完全相同)。一切都被容器化(应用程序和数据库)。核心服务器很少会更新所有卫星所需的一些数据。目前,我有一颗卫星,但是这个数字将增长到几颗(在不久的将来,我认为不会超过100颗)。核心与卫星之间没有顺序或争用的问题。核心永远不会更新与任何一个卫星相同的事务,并且任何卫星都不会与任何其他卫星更新相同的事务。更好的是,金融交易使用uuid作为主键。

由于这是一个多主机同步问题,所以我自然会遇到BDR。我有以下问题:

  • BDR生产准备就绪且稳定吗?我正在阅读几种竞争技术(例如Bucardo和Londiste)。它真的会成为Postgres 9.6的一部分吗?
  • BDR可以处理断开的模型吗?我认为这种情况不会经常发生,但是我的卫星可能会断开几个小时的连接。
  • BDR可以进行选择性同步吗?例如,我只希望某些表同步。
  • BDR可以处理100颗卫星吗?
  • 最佳答案



    是的,用于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来为客户设计。

    10-06 13:08