Table of Contents
PostgreSQL 提供了强大的底层基础设施,能够将通过 SQL 执行的数据修改流式解码并推送到外部消费者。该功能可用于多种用途,包括高阶复制解决方案与数据审计。
变更数据通过由逻辑复制槽标识的流进行发送。
流式传输这些变更的格式完全由所使用的输出插件决定。PostgreSQL 官方分发包中提供了一个示例插件。开发者也可以自行编写扩展插件,在无需修改任何内核核心代码的前提下丰富可用格式的选择。每个输出插件均有权访问由 INSERT 生成的每条全新数据行,以及由 UPDATE 生成的新行版本。对于 UPDATE 和 DELETE 操作是否能获取到旧行版本,取决于表上所配置的复制标识(Replica Identity,参见 REPLICA IDENTITY)。
可以通过流复制协议(参见 Section 54.4 与 Section 47.3)或者通过 SQL 调用函数(参见 Section 47.4)来消费这些数据变更。也可以编写自定义方式消费复制槽输出而无需修改内核源码(参见 Section 47.7)。