pgcat

增强的 PostgreSQL 逻辑复制软件
授权协议 Apache
开发语言 Google Go SHELL
所属分类 数据库相关、 数据库调整和优化
软件类型 开源软件
地区 国产
投 递 者 石俊雄
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Why pgcat?

PostgreSQL 内置的逻辑复制有如下缺陷:

  • 只支持普通表作为复制目标
  • 不能过滤复制数据,使得两个机房之间互相复制时发生死循环
  • 不支持表名映射
  • 没有冲突解决机制

pgcat 做了如下增强:

  • 支持所有表类型,包括 view、fdw、分区表、citus的分布式表等等
  • 只复制本地产生的数据变更,使得可以机房之间安全复制
  • 表名映射,可以将多个源表映射到一个目标表
  • 可选的last-writer-win(类似Cassandra)冲突解决机制(通过trigger来实现)
  • 复制进度保存到单独的表,使得进度可以failover

pgcat 重用了 postgresql 内置的 pgoutput ouput plugin 和 publication,使用 golang 重写了 subscription 部分,以单独的进程来运行。

 相关资料
  • 问题内容: 我试图更深入地了解后期和前置增量器,但以下表达式有些卡住: 我知道我在某个地方缺少逻辑,但是在哪里? 我尝试过的 从左到右(尽管我知道不建议这样做) 从内部支架开始,然后从那里开始。 谢谢您的帮助 PS:评论是我演算的细节 编辑1 我试图将硬编码值从表达式更改为其他值,结果总是 看这个例子: 该表达式在逻辑上应该相距不远,但确实可以打印出来。 当我使用负数时也会发生同样的情况: 编辑2

  • 我有一个规则表,有2亿行。 我决定使用逻辑复制将此表转换为声明性分区。

  • 随着应用程序的增长,在 reducer 逻辑中开始出现一些常见的模式。你可能会发现一部分 reducer 逻辑对于不同类型的数据做着相同的工作,你想通过对每种数据类型复用相同的公共逻辑来减少重复的代码。或者,你可能想要在 store 中处理某个类型的数据的多个”实例“。然而,Redux store 采用全局结构的设计本身就是一种折衷:优点是易于追踪应用程序的整体状态,但是,也可能更难的”命中“那些

  • 有人知道为什么这个循环总是针对不同于1或0的值,以及如何避免在输入字符时出现无休止的循环吗? }

  • 特性状态: Alpha Kubernetes 内置 StatefulSet 为 Pods 分配连续的序号。比如 3 个副本时,Pods 分别为 pod-0, pod-1, pod-2。扩缩容时,必须在尾部增加或删除 Pods。比如扩容到 4 个副本时,会新增 pod-3。缩容到 2 副本时,会删除 pod-2。 在使用本地存储时,Pods 与 Nodes 存储资源绑定,无法自由调度。若希望删除掉中

  • 《复制增量》又是一款受到《反物质维度》启发的放置游戏。