6

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

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

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

1 回答 1

12

BDR 生产是否准备就绪且稳定?

是的,用于 BDR-Postgres 9.4 的 BDR 1.0 已准备好生产且稳定。但是我会说,因为我为开发 BDR 的 2ndQuadrant 工作

不是独立 PostgreSQL 的直接替代品,您可以在不更改应用程序的情况下使用它。请参阅手册的概述部分。

我正在阅读一些竞争技术(如 Bucardo 和 Londist)。

他们都是不同的。不同的取舍。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 的更好用例。

我不能在这里详细介绍,因为它与我参与的商业咨询服务重叠。我与之合作的团队为客户设计了这样的东西,作为一种专业服务

于 2016-12-22T11:08:05.880 回答