debezium - 数据实时捕获和传输管道(CDC)
背景
在业务系统中,会涉及到多个数据源的数据流转,例如在线系统的数据流转到分析系统、流计算系统、搜索引擎、缓存系统、事件处理系统等。
为了实现这一目的,CDC系统应运而生,CDC系统用于捕获上游数据的实时变化(已提交的数据),写入消息队列(例如KAFKA)持久化。下游系统,消费消息队列的数据。从而实现实时的数据流转。
debezium是一个开源的分布式CDC系统,支持对接各种数据源,将上游已持久化的数据变更捕获后写入消息队列。
https://github.com/debezium/debezium
https://debezium.io/docs/connectors/postgresql/
上游是PostgreSQL、MySQL时,支持通过WAL、BINLOG实时捕获已提交事务数据。
https://github.com/debezium/postgres-decoderbufs
通过这种方法,可以将数据从MySQL实时同步到PostgreSQL,或者从其他系统,将数据实时同步到PostgreSQL。
由于PostgreSQL的功能强大,支持并行计算、空间数据处理、文本分析、数据挖掘、机器学习、复杂查询、冷热分离存储、分布式架构(citus, greenplum, xl)等。
PostgreSQL可以用于这些系统的中心数据库(分析、复杂查询、挖掘),搜索引擎(全文检索、模糊检索、相似检索),实时预警(流式事件处理),空间数据库(PostGIS空间数据实时处理)。