我有一个系统,其中多个卫星创建金融交易,他们需要与核心服务器同步。卫星是使用本地Postgres数据库运行Rails应用程序的远程服务器。核心是另一个拥有自己的Postgres数据库的Rails应用程序。卫星和核心具有几乎相同的模式(但不完全相同)。一切都是集装箱化的(应用程序和数据库)。核心服务器很少会更新所有卫星所需的数据。目前我有一颗卫星,但这个数字会增长到一对(我认为在遥远的未来不会超过100颗)。核心和卫星之间没有序列或争用的问题。核心将永远不会更新与任何卫星相同的交易,并且任何卫星都不会更新与任何其他卫星相同的交易。更好的是,金融交易以uuid为主键。
由于这是一个多主同步问题,我自然而然地遇到了BDR。我有以下问题:
答案 0 :(得分:11)
BDR生产准备好并且稳定吗?
是的,BDR-Postgres 9.4的BDR 1.0可以生产并且稳定。但后来我会说since I work for 2ndQuadrant, who develop BDR。
不是独立PostgreSQL的直接替代品,您可以在不更改应用程序的情况下使用它。请参阅手册的概述部分。
我正在阅读几种竞争技术(如Bucardo和Londiste)。
他们都不同。不同的权衡取舍。在BDR手册中对它们进行了一些讨论,但当然,由于我们几乎不能公正地对它进行讨论。
它真的会成为Postgres 9.6的一部分吗?
不,绝对不是。你在哪里看到这种说法?
将来(但尚未)将扩展发布到添加 BDR到PostgreSQL 9.6准备就绪时。但它不会是 PostgreSQL 9.6的一部分,它将是你安装在顶部的东西。
BDR可以处理断开连接的型号吗?我不认为这种情况经常发生,但我的卫星可能会断开几个小时。
是的,它可以很好地处理临时分区和网络中断,并在全局序列周围提出一些警告。有关详细信息,请参阅手册。
BDR可以进行选择性同步吗?
是。有关复制集的信息,请参阅手册。
表结构总是被复制。目前的初始表内容也是如此。但表格更改可以选择性地逐表复制。
例如,我只希望某些表同步。
不确定
BDR可以处理100颗卫星吗?
不太好。它是一种网状拓扑,可以期望每个卫星与其他卫星通信。此外,每个节点有198个后端(99个walsenders + 99个应用工作者)。不漂亮。
你真的想要一个星型和集线器模型,每个卫星只与集线器通信。这在BDR 1.0中不受支持,也不是BDR 2.0支持的目标。
我认为这是pglogical或Londiste的更好用例。
我不能在这里详细介绍,因为它与我参与的商业咨询服务重叠。我工作的团队为客户设计了professional service这样的东西。