PostgreSQL>;=10筛选的出版物和订阅

PostgreSQL>;=10筛选的出版物和订阅,postgresql,Postgresql,我疯狂地寻找有关这方面的信息。MS SQL提供了可以在这里找到的选项,但我在Postgres中找不到这样做的方法 情况就是这样: 有一个中央服务器存储其他本地服务器在本地使用的资源信息 每个本地服务器只对属于它的资源感兴趣。(也就是说,有一个中央图书库,我只想要用我的语言写的书) 此外,由于每台服务器都是一个独立的客户端,因此应该有一道“长城”,以避免它们访问其他客户端的信息 我们已经想到了几条发展这一点的路线: 使用套接字(已经实现)通过API将更改从中心推送到本地 使用触发器在数据库级

我疯狂地寻找有关这方面的信息。MS SQL提供了可以在这里找到的选项,但我在Postgres中找不到这样做的方法

情况就是这样:

  • 有一个中央服务器存储其他本地服务器在本地使用的资源信息
  • 每个本地服务器只对属于它的资源感兴趣。(也就是说,有一个中央图书库,我只想要用我的语言写的书)
  • 此外,由于每台服务器都是一个独立的客户端,因此应该有一道“长城”,以避免它们访问其他客户端的信息
我们已经想到了几条发展这一点的路线:

  • 使用套接字(已经实现)通过API将更改从中心推送到本地
  • 使用触发器在数据库级别将更改从中心推送到本地
  • 使用问题中解释的逻辑复制
我也没有关于哪种方法在计算或I/O方面更有效的信息。该表很小,不到15列,不到10000行。所以我想应该没有问题。尽管此表的更新速度可能为每秒几次(估计平均每秒2或3次)

逻辑复制(数据库级别的发布服务器+订阅服务器)似乎是合适的解决方案,但我被卡住了


想法?

使用逻辑复制的一种方法是按客户机对表进行分区,并仅复制相应的分区

但是有10000行,这似乎太过分了

我将在表上启用行级安全性,以便每个客户端只能看到属于它们的数据。然后在每个客户机的数据库中定义一个外部表,并完成整个过程。你也可以

  • 每次截断并替换表

  • 如果具有外键依赖项,请首先删除中心数据库中不再存在的行,然后插入或更新新的行或已修改的行

如@a_horse_和_no_名称所述,Package pglogical可用于此目的


延迟现在看起来不错,对我们来说,它完成了任务。

我认为内置逻辑复制无法实现这一点。但你可以试试看哪里是可能的。我错过了那个包裹,搜索了两天。。。似乎是我们需要的。现在正在对如上所述的pglogical进行附加测试,调查行级安全性。我想我会把这两个混合起来。一旦测试,将报告解决方案。谢谢