Jen*_*a S 6 postgresql database-design postgresql-bdr
我有一个系统,多个卫星创建金融交易,他们需要与核心服务器同步.卫星是使用本地Postgres数据库运行Rails应用程序的远程服务器.核心是另一个拥有自己的Postgres数据库的Rails应用程序.卫星和核心具有几乎相同的模式(但不完全相同).一切都是集装箱化的(应用程序和数据库).核心服务器很少更新所有卫星所需的数据.目前我有一颗卫星,但这个数字会增长到一对(我认为在遥远的未来不会超过100颗).核心和卫星之间没有序列或争用的问题.核心将永远不会更新与任何卫星相同的交易,并且任何卫星都不会更新与任何其他卫星相同的交易.更好的是,金融交易以uuid为主键.
由于这是一个多主同步问题,我自然而然地遇到了BDR.我有以下问题:
Cra*_*ger 11
BDR生产准备好并且稳定吗?
是的,BDR-Postgres 9.4的BDR 1.0是生产就绪且稳定的.但后来我会说,因为我为2ndQuadrant工作,谁开发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的一个更好的用例.
我不能在这里详细介绍,因为它与我参与的商业咨询服务重叠.我工作的团队为客户设计这样的东西作为专业服务.