四个交互演示:① Kafka → MV → MergeTree 三件套 · ② MaterializedPostgreSQL 同步 · ③ 表函数对比卡 · ④ 实时数仓全链路
看一条业务消息从 Kafka 到 ClickHouse 落盘的完整路径。注意 events_kafka 表是虚拟的,本身不存数据:
基于 PG 逻辑复制 slot 把整库同步到 CK 做 OLAP 镜像。看一条 PG 上的 INSERT 如何到达 CK:
SELECT pg_drop_replication_slot('ck_slot_xxx'),
否则 PG 会保留所有未消费的 WAL,几小时就能把磁盘撑爆!
ClickHouse 提供了一整套「把 X 当 CK 表来查」的能力,每张卡片对应一种数据源:
SELECT * FROM mysql( 'host:3306', 'shop', 'orders', 'user', 'pwd' ) WHERE id = 1001;
SELECT * FROM postgresql( 'pg-host:5432', 'shop', 'orders', 'user', 'pwd', 'public' );
SELECT count(*) FROM s3( 'https://b/events/*.parquet', 'Parquet', 'AKIA...', 'SECRET...' );
SELECT count(*) FROM hdfs( 'hdfs://nn:9000/logs/*.json', 'JSONEachRow' );
INSERT INTO new_db.events SELECT * FROM remote( 'old-ck:9000', old_db.events, 'user','pwd' );
SELECT * FROM url( 'https://x/data.csv', 'CSVWithNames' );
典型「实时埋点统计」链路:从一条业务事件落到看板的完整旅程:
uniqExactMerge(state) 把已经压缩过的草图合并 —— 这就是 CK 能秒级返回亿级数据聚合的根本。