1

在此处输入图像描述

根据上图,我希望在内部数据库(右侧)中有某些表。我想在外部数据库中复制的其他表。

实际上,只有一组值不应该被复制。可以复制数据库的其余部分。基本上,表中的实际价格列prices无法复制。它应该保留在内部数据库中。

由于供应商在网络外部,因此他们无法访问内部应用程序。

我的计划是创建相同应用程序的复制版本,并允许供应商提交报价和拣货。

假设复制的表至少是quotationsquotation_line_items这些表在外部数据库和内部数据库中都应该是可写的(就 INSERT、UPDATE 和 DELETE 的数据而言)。因此,在两个数据库中,quotationsandquotation_line_items表中的数据都是可写的,并且应该双向复制。

除了表中的实际原始价格列外,其他表中的数据将按单一方向(从内部到外部)复制prices

quotation_line_items表将有一price_id列。但是,表中的原始价格值prices不应出现在外部数据库中。

最终,我希望两个数据库上的复制表的数据保持一致。我对同步复制没问题,所以有点延迟(比如,写操作需要几秒钟)就可以了。

我遇到了 pglogical https://github.com/2ndQuadrant/pglogical/tree/REL2_x_STABLE

他们有PUBLISHER和SUBSCRIBER的概念。

根据自述文件,我无法判断哪个将充当发布者和订阅者,以及如何针对我的情况进行配置。

4

2 回答 2

0

那是行不通的。使用您梦寐以求的设置,您必然会遇到复制冲突。

您想如何防止在两个数据库中以冲突的方式修改数据?如果你说那不会发生,那就再想一想。

我相信您最好使用具有两个用户的单个数据库:一个可以访问“秘密”表,另一个不能。

如果您只想限制对某些列的访问,请使用视图。简单视图在 PostgreSQL 中是可更新的。

于 2018-11-07T07:23:18.923 回答
0

使用 pglogical 的 BDR 复制是可能的。在基本层面上,通过为每个节点分配一系列关键 ID,以便在两个位置都可以写入而不会发生冲突。然而,BDR 现在是一种商业付费产品。

于 2021-08-17T11:39:58.140 回答