Flink CDC中pg的逻辑复制和cdc 是一样的嘛?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 Flink CDC 中,pg(指 PostgreSQL)的逻辑复制和 CDC(Change Data Capture)是类似但不完全相同的概念。
逻辑复制是 PostgreSQL 数据库自身的功能,它从 PostgreSQL 10 版本开始引入。通过逻辑复制,PostgreSQL 可以将逻辑改变记录(Logical Change Records,LCR)从 WAL(Write-Ahead Log)日志中发送给订阅者,并实现增量数据的复制和同步。订阅者可以根据需要将 LCR 转换为其他格式,例如 SQL 语句,以便在另一个 PostgreSQL 数据库中执行。在逻辑复制中,订阅者需要创建一个逻辑复制插槽(Replication Slot),以便从 WAL 日志中读取 LCR 记录。
而 CDC 是一种更通用的概念,广义上指的是捕获数据源(如数据库)的变化,并将这些变化转换为可供其他系统使用的形式。CDC 不仅限于特定的数据库实现,也可以应用于其他数据源,如消息队列、文件系统等。在 Flink CDC 中,针对不同的数据源,实现了相应的 CDC Connector,用于实时读取和处理增量数据。
在 Flink CDC 中,PostgreSQL Connector 使用逻辑解码(Logical Decoding)方式实现增量数据的读取。通过连接到 PostgreSQL 数据库的逻辑解码输出流(Logical Decoding Output Plugin),PostgreSQL Connector 从 WAL 日志中读取逻辑改变记录(LCR),并将其转换为 Flink 可处理的格式,如 JSON 或 Avro。与逻辑复制相比,Flink CDC 的 PostgreSQL Connector 不需要创建逻辑复制插槽,而是利用逻辑解码输出流进行增量数据的读取。
因此,虽然 pg 的逻辑复制和 CDC 在某种程度上具有相似性,但在具体实现和使用方式上存在一些差异。请根据具体的场景和需求选择适合的方法和工具。
PostgreSQL 中,有两种方式可以实现增量数据的读取:逻辑复制和逻辑解码(Logical Decoding)。
逻辑复制是 PostgreSQL 从 10 版本开始引入的一项功能,它通过将 WAL(Write-Ahead Log)日志中的逻辑改变记录(Logical Change Records,LCR)发送到一个或多个订阅者(Subscribers),实现增量数据的复制和同步。订阅者可以使用自己的方式,将 LCR 转换为自己需要的格式,例如,可以将 LCR 转换为 SQL 语句,以便在另一个 PostgreSQL 数据库中执行。在逻辑复制中,订阅者需要创建一个逻辑复制插槽(Replication Slot),以便从 WAL 日志中读取 LCR 记录。
逻辑解码是 PostgreSQL 从 9.4 版本开始引入的一项功能,它允许用户将 WAL 日志中的逻辑改变记录(Logical Change Records,LCR)转换为易于处理的格式,例如,JSON 或者 Protocol Buffer。逻辑解码不需要订阅者创建逻辑复制插槽,而是通过使用一个外部插件,将 LCR 转换为需要的格式。外部插件可以通过 PostgreSQL 的插件机制进行加载和管理。
在 Flink CDC 中,PostgreSQL Connector 使用逻辑解码方式实现增量数据的读取。具体来说,PostgreSQL Connector 会通过订阅 PostgreSQL 数据库的逻辑解码输出流(Logical Decoding Output Plugin),从 WAL 日志中读取逻辑改变记录(LCR),并将其转换为 Flink 能够处理的格式(例如,JSON 或者 Avro)。在此过程中,PostgreSQL Connector 不需要创建逻辑复制插槽,而是通过连接到 PostgreSQL 数据库的逻辑解码输出流,实现增量数据的读取。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。