前两篇 DuckDB 专题(架构(第 11 篇)、Pipeline(第 12 篇))与 ClickHouse 主系列(MergeTree、Distributed、运维)放在一起,读者自然问:同一 OLAP 问题该用谁?
本文给 决策树与组合架构,不做「谁快 10 倍」类结论——WRITING_GUIDE 要求性能判断须实测或引用;此处两者工作负载差异太大,虚构数字无意义。
一、问题 framing:不是替代关系
| 误区 | 澄清 |
|---|---|
| DuckDB 是小 ClickHouse | 嵌入 vs 服务,存储生命周期不同 |
| ClickHouse 可替代 DuckDB 做 notebook | 可以远程连 CH,但运维重量不同 |
| 二选一 | 生产常见 PG OLTP + CH 分析 + DuckDB 本地 EDA |
flowchart TB
Q[分析需求]
Q -->|远程多用户 PB 级| CH[ClickHouse 集群]
Q -->|进程内 TB 级| DUCK[DuckDB]
Q -->|PG 库内加速| PGD[pg_duckdb]
Q -->|湖仓 Parquet 探查| DUCK
CH --> PG[(PostgreSQL CDC)]
DUCK --> PG
二、五维对比矩阵
2.1 部署与接入
| ClickHouse | DuckDB | |
|---|---|---|
| 部署 | server cluster | pip install / 单二进制 |
| 协议 | HTTP/TCP/MySQL wire | API |
| 多租户 | 用户/配额/RBAC | 文件级隔离 |
| 升级 | 滚动升级集群 | 库版本随应用发版 |
2.2 数据规模与持久化
| ClickHouse | DuckDB | |
|---|---|---|
| 典型上限 | PB 级(分 shard) | 单机 TB 级舒适区 |
| 文件形态 | 大量 Part 目录 | 单 .duckdb + checkpoint |
| 合并 | MergeTree merge 持续 | Checkpoint |
| 删改 | Mutation 重 | UPDATE 重写 RG |
Refer Merge(第 06 篇) vs DuckDB checkpoint。
2.3 并发与 QPS
| ClickHouse | DuckDB | |
|---|---|---|
| 并发 SELECT | 高(集群线性扩展) | 受 threads 与单文件锁约束 |
| 并发 INSERT | 极高 ingest 设计 | 写并发弱 |
| 交互延迟 | ms~s(视 merge/parts) | 本地 ms 级常见 |
不列 QPS 数字——须用业务 query mix 压测。
2.4 SQL 与生态
| ClickHouse | DuckDB | |
|---|---|---|
| SQL 方言 | CH 扩展多 | PG-like |
| 窗口函数 | 支持 | 支持 |
| 数组/嵌套 | Tuple/Nested | LIST/STRUCT |
| BI 工具 | 广泛 JDBC/HTTP | 增长中 |
| 联邦 | PostgreSQL/MySQL engine | postgres_scanner, httpfs |
2.5 运维与故障域
| ClickHouse | DuckDB | |
|---|---|---|
| 监控 | system 表丰富(第 14 篇) | 轻量 pragma |
| 经典故障 | parts/merge/replica(第 15 篇) | OOM/spill/文件锁 |
| 人力 | 专职平台常见 | 应用团队自给 |
三、决策树(文字版)
START
├─ 是否需要独立 SQL 服务供多团队/BI 远程访问?
│ ├─ 是 → 倾向 ClickHouse(或 Trino/StarRocks 等,本文边界外)
│ └─ 否 → 继续
├─ 数据是否已在 Parquet/CSV 文件 / S3,仅偶尔分析?
│ ├─ 是 → 倾向 DuckDB(read_parquet/httpfs)
│ └─ 否 → 继续
├─ 持续 ingest > 单机磁盘 IO 或需副本 HA?
│ ├─ 是 → ClickHouse ReplicatedMergeTree + Distributed
│ └─ 否 → 继续
├─ 是否必须嵌在 Python/R 进程且无运维?
│ ├─ 是 → DuckDB
│ └─ 否 → 继续
├─ 是否已有 PostgreSQL 且只想加速 ANALYTICAL 查询?
│ ├─ 是 → 评估 pg_duckdb vs CH 外表副本
│ └─ 否 → 按团队技能 CH/DuckDB 二选一
END
四、组合架构模式
4.1 PG + ClickHouse 分析副本
- OLTP 在 PG(postgresql-kernel);
- CDC / 批量导出到 CH MergeTree;
- 复杂聚合、日志级 scan 走 CH。
DuckDB 不承担中心仓,除非规模小。
4.2 PG + pg_duckdb
- 同一实例,分析查询路由 DuckDB 执行;
- 适合 数据量中小、不想运维第二套集群;
- 与 CH 副本相比:少网络 hop,多 PG 资源争用。
4.3 DuckDB 边缘 + ClickHouse 中心
- 边缘设备 DuckDB 预聚合;
- 周期性 upload 汇总行到 CH Distributed;
- IoT / 门店场景。
4.4 数据科学 DuckDB + 生产 CH
- 分析师本地 DuckDB 拉 Parquet sample;
- 生产 truth 在 CH——避免直连生产大 scan。
五、与 PostgreSQL 生态位
| 需求 | 推荐路径 |
|---|---|
| 强一致 OLTP | PG |
| 复杂 JOIN 中小数据 | PG 或 DuckDB attach PG |
| 十亿行聚合 | CH 或 DuckDB 单机(视 RAM) |
| 实时 dashboard 全公司 | CH 集群 |
| Notebook 探索 | DuckDB |
PG B-Tree 索引语义 与 CH 排序键(第 07 篇) 不同——迁 schema 时勿照搬 PRIMARY KEY 含义。
六、与 LSM / 行存边界
LSM 系列 写优化 ingest(Kafka → CH 也常并存);DuckDB 不取代 Kafka consumer 集群。行存 InnoDB/PG 做源库,列存做 读优化副本——铁三角见 系列 index。
七、成本维度(非 benchmark)
| 成本项 | ClickHouse | DuckDB |
|---|---|---|
| 机器 | 多节点 SSD | 0 增量(用现有机器) |
| 运维 headcount | 高 | 低 |
| 培训 | CH 方言 + 分布式 | SQL + Python API |
| 云托管 | ClickHouse Cloud 等 | MotherDuck 等(产品演进快,不评 internals) |
八、何时两者都用
合法且常见:
- CH 生产仓 + DuckDB 本地复现 bug(拉 sample Parquet);
- CH 存全量 + DuckDB 做 ML feature export;
- 不同团队技能栈——数据平台 CH,研究 DuckDB。
避免:双写全量 无同步机制——必不一致。
九、反模式
| 反模式 | 后果 |
|---|---|
| DuckDB 当多用户 BI server | 连接与锁瓶颈 |
| ClickHouse 嵌 Python 每进程起一个 server | 资源爆炸 |
| 用 GLOBAL JOIN 代替选型 | 见 第 09 篇 |
| 忽视 CH parts 治理做实时小 batch | 第 15 篇 |
| 期望 DuckDB 跨机 shard | 无内置 |
十、评估清单(POC 设计)
POC 应 固定 query mix 与数据规模,记录:
- 环境:CPU、RAM、磁盘、版本号;
- 负载:并发、insert batch size、SELECT 比例;
- 指标:p50/p95 延迟、吞吐、磁盘、失败率;
- 运维:备份、升级、故障注入(杀进程、断网);
- 结论:业务 SLA 是否满足——不输出跨团队通用排名。
十一、学术坐标:选型旁的论文地图(非排名)
决策树回答「部署形态」;下表回答「文献里各自优化什么」——不能用来宣称谁更快。
| 坐标 | ClickHouse 主路径 | DuckDB 主路径 |
|---|---|---|
| 存储范式 | C-Store 式不可变列文件 + merge(第 01/06 篇) | 嵌入式单文件 + checkpoint(第 11 篇) |
| 执行范式 | MonetDB/X100 向量 + Processors(第 04 篇) | X100 向量 + morsel(第 12 篇;Leis 2014) |
| 并行争论 | 多查询 + merge 线程池 | 单查询多核 work stealing |
| compiled vs vectorized | 默认向量;可选表达式 JIT(Kersten 2018) | 向量为主;局部特化 |
| 系统边界 | 服务端、副本、Distributed | 进程内、联邦读文件 |
11.1 争论:统一引擎 vs 双栈
- 统一引擎:一个系统扛 OLTP+OLAP 或「一个 OLAP 打天下」——HTAP / 湖仓路线见 db-frontier/12、lakehouse。
- 双栈(本系列默认工程判断):PG/行存 OLTP + CH 服务分析 + DuckDB 本地探查——与 C-Store「读写存储分离」精神一致,但是 产品边界分离,不是单进程 WS/RS。
无顶会结论要求所有组织选同一栈;POC 须固定 query mix(第十节)。
11.2 开放问题
- pg_duckdb 是否侵蚀「独立 CH 集群」的中小规模市场? 可检验:同一报表在 PG 扩展 vs CH 副本的运维人天与 SLA(入口:pg_duckdb 文档;本篇决策树)。
- 湖上 DuckDB / CH 谁更适合作为 Iceberg 交互层? 见 query-engine / lakehouse;本篇不展开。
- 向量化引擎是否应统一 morsel API? 研究侧开放;生产以各项目 release 为准。
十二、小结
- 服务化、大规模、高 ingest、副本 HA → ClickHouse 主系列能力栈;
- 嵌入、文件分析、联邦探查、轻运维 → DuckDB;
- PG 内分析 → pg_duckdb vs CH 副本按规模与组织分工。
无银弹;组合架构多于单选。论文坐标(C-Store / X100 / morsel / Kersten)解释 为何分工,不替代 POC。
附录 A、场景叙事(无性能数字)
A.1 中心化日志平台
特征:PB 级、数千 QPS ingest、多团队 SQL、副本 HA。
选型:ClickHouse ReplicatedMergeTree +
Distributed + Kafka MV(第
10 篇)。
DuckDB 位置:分析师本地 sample Parquet,不扛生产
ingest。
A.2 电商 PG 库内报表
特征:单 PG 实例、<1TB 分析表、无专职 CH 运维。
选型:pg_duckdb 或 periodic export + DuckDB
notebook。
何时升级到 CH:PG CPU/IO 被分析打满、需独立 SLA。
A.3 数据科学笔记本
特征:S3 Parquet、单用户、交互探索。
选型:DuckDB read_parquet /
httpfs。
CH 仅在需共享 dashboard 服务时叠加。
A.4 边缘门店汇总
特征:断网、本地聚合、周期性 upload。
选型:门店 DuckDB 预聚合;中心
ClickHouse 收汇总行。
注意 upload batch 避免中心 too many parts。
A.5 合规数据不出 VPC
特征:敏感数据、禁止第三方 SaaS 分析。
两者均可自建;CH 集群运维更重,DuckDB 嵌入应用更轻——按
运维编制 而非技术绝对优劣。
A.6 HTAP 幻想警示
特征:期望一套系统 OLTP+实时大屏。
现实:PG/Citus OLTP + CH 副本仍主流;DuckDB 不替代 PG
事务;CH 不做行级事务。
附录 B、团队技能矩阵
| 团队能力 | 倾向 |
|---|---|
| 已有 CH 平台组 | 新 OLAP 优先 CH |
| 仅 PG DBA | pg_duckdb / 只读副本 |
| Python 数据科学 | DuckDB 默认 |
| Java BI + JDBC | CH JDBC 成熟 |
附录 C、迁移路径
PG → CH:CDC(Debezium)或批量
COPY → MergeTree;排序键 redesign(第 07
篇)。
CH → DuckDB:FORMAT Parquet
导出 → read_parquet;丢失
Distributed/副本,仅便携分析。
DuckDB → CH:EXPORT DATABASE /
Parquet 中间格式 → CH INSERT;须重设
PARTITION/ORDER BY。
附录 D、合规与驻留
两者均可 on-prem。DuckDB 数据在单文件易拷贝——权限与磁盘加密由宿主应用负责。CH 集群需 RBAC、network isolation、backup 策略(监控 第 14 篇)。
附录 E、FAQ
Q:MotherDuck / ClickHouse Cloud?
托管控制面不在本系列;选型看数据驻留与合同,不评内部实现。
Q:Trino/StarRocks?
联邦或替代 OLAP——超出本系列;CH vs DuckDB 聚焦 MergeTree vs
嵌入 DuckDB。
Q:只用 Parquet lake 呢?
DuckDB 探查 + CH Serving 层是常见 lakehouse 分工。
附录 F、检查清单(POC 出口)
附录 G、角色 RACI 示例
| 活动 | 数据平台 | 应用 | 分析 |
|---|---|---|---|
| CH 集群运维 | R/A | I | I |
| DuckDB notebook | C | I | R |
| 分片键设计 | R | C | I |
| PG OLTP | I | R/A | I |
R=负责 A=批准 C=协商 I=知会——组织模板,非技术结论。
附录 H、许可证与合规
ClickHouse Apache 2.0;DuckDB MIT——一般企业友好;法务仍审 third-party。数据驻留取决于部署位置非许可证。
附录 I、多租户隔离
CH:database + row policy + network。DuckDB:每租户单文件或单进程——隔离强但运维 multiplication。
附录 J、版本升级策略
CH 滚动升级 LTS track;DuckDB 随应用发版 pin 版本—— regression test on export/import。
附录 K、Skills 培训路径
CH:MergeTree parts + Distributed + system 表(本系列)。DuckDB:SQL + Python + Parquet。PG DBA 转 CH 先纠正索引/事务心智。
附录 L、When both in same company
平台组 CH;研究组 DuckDB;规范 Parquet 作为交换格式 避免双写 truth。
附录 M、Anti-pattern 补充
| 反模式 | 说明 |
|---|---|
| DuckDB TCP hack | 非设计用途 |
| CH 每微服务 embedded | 应用内嵌 CH 库不存在 |
| 比较 hello world QPS | 无业务 representativeness |
附录 N、Open table format 未来
Iceberg/Delta 表上 DuckDB/Trino/CH 外表——lakehouse 选型超出本系列 core,但 Serving 层 仍常 CH。
附录 · 深度补充(系列交叉索引)
深度 1
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 2
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 3
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 4
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 5
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 6
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 7
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 8
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 9
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 10
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 11
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 12
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 13
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 14
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 15
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 16
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 17
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 18
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 19
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 20
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 21
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 22
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 23
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 24
第 13 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
附录 · 工程深化索引
深化 1:规模:十亿行集群
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 规模:十亿行集群 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 2:并发:数百查询
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 并发:数百查询 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 3:嵌入:进程内分析
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 嵌入:进程内分析 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 4:联邦:pg_duckdb
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 联邦:pg_duckdb 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 5:运维:parts 与 merge
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 运维:parts 与 merge 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 6:成本:云托管
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 成本:云托管 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 7:延迟:点查 vs 扫描
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 延迟:点查 vs 扫描 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 8:更新:mutation 代价
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 更新:mutation 代价 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 9:副本:Keeper 协调
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 副本:Keeper 协调 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 10:安全:网络暴露面
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 安全:网络暴露面 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 11:生态:BI 连接
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 生态:BI 连接 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 12:SQL 方言差异
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | SQL 方言差异 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 13:时序:Gorilla 编码
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 时序:Gorilla 编码 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 14:地理:分布式 JOIN
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 地理:分布式 JOIN 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 15:日志:Kafka ingest
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 日志:Kafka ingest 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 16:数据科学:Python API
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 数据科学:Python API 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 17:HTAP 边界
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | HTAP 边界 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 18:SQLite 替代
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | SQLite 替代 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 19:ClickHouse Cloud
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | ClickHouse Cloud 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 20:MotherDuck
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | MotherDuck 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 21:决策树:先问部署形态
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 决策树:先问部署形态 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 22:决策树:再问并发
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 决策树:再问并发 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 23:决策树:最后问联邦
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 决策树:最后问联邦 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 24:混合架构:CH 仓 + DuckDB 探索
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 混合架构:CH 仓 + DuckDB 探索 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 25:不排名原则
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 不排名原则 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 26:规模:十亿行集群
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 规模:十亿行集群 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 27:并发:数百查询
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 并发:数百查询 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 28:嵌入:进程内分析
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 嵌入:进程内分析 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 29:联邦:pg_duckdb
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 联邦:pg_duckdb 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 30:运维:parts 与 merge
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 运维:parts 与 merge 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 31:成本:云托管
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 成本:云托管 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 32:延迟:点查 vs 扫描
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 延迟:点查 vs 扫描 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 33:更新:mutation 代价
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 更新:mutation 代价 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 34:副本:Keeper 协调
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 副本:Keeper 协调 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 35:安全:网络暴露面
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 安全:网络暴露面 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 36:生态:BI 连接
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 生态:BI 连接 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 37:SQL 方言差异
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | SQL 方言差异 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
深化 38:时序:Gorilla 编码
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 时序:Gorilla 编码 在 ClickHouse 24.x 中的默认行为 | 第 05 篇 |
| 运维 | staging 用 system.parts /
query_log 建 24h 基线 |
第 14 篇 |
| 故障 | 与 parts/merge 相关的典型信号 | 第 15 篇 |
| 配置 | 相关 setting 变更须可回滚 | 第 16 篇 |
flowchart LR
Q[查询/写入] --> P[parts 状态]
P --> M[merge 后台]
M --> MON[system.merges]
MON --> CFG[配置调优]
上一篇:DuckDB Pipeline
下一篇:监控与系统表
参考资料
核心论文
- Stonebraker et al., C-Store, VLDB 2005(列存架构坐标;A 级)。
- Boncz et al., MonetDB/X100, CIDR 2005(向量化坐标;A 级)。
- Leis et al., Morsel-Driven Parallelism, SIGMOD 2014(DuckDB 并行坐标;A 级)。
- Kersten et al., Compiled and Vectorized Queries, PVLDB 2018(执行争论;A 级)。
规范 / 源码 / 文档
- ClickHouse Documentation, 24.x — 部署与用例(A 级)。
- DuckDB Documentation, 1.x — 嵌入与扩展(A 级)。
- pg_duckdb 项目文档 — 联邦边界(B 级)。
- 本系列 PLAN 研究台账;第 01、04、12 篇。
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【分布式 OLAP 查询引擎】引擎选型与数据平台阅读地图
用决策树收束 Trino/Spark/ClickHouse/DuckDB/DataFusion/PostgreSQL 的适用边界:交互式联邦、批 ETL、嵌入式分析、流批一体各走哪条路径;给出能力对照表(无吞吐排名)与 postgresql→columnar→lakehouse→stream→query-engine 全栈阅读顺序,闭合数据平台栈。
【列存引擎内核】DuckDB 架构与嵌入式 OLAP
DuckDB 进程内嵌入式模型、Storage 的 Row Group 与 Column Segment、Catalog 与 checkpoint;与 ClickHouse Server 部署差异及 pg_duckdb 联邦场景边界。
【列存引擎内核】物化视图与增量管道
ClickHouse Materialized View 的触发语义、块级增量与目标表引擎选择;Kafka Engine + MV 典型架构;与 PostgreSQL 触发器/MV 的对照及常见坑。
【列存引擎内核】DuckDB 向量化与 Morsel-Driven Pipeline
DuckDB 向量批执行、morsel-driven 并行、Pipeline 调度与 spill;源码 execution/parallel 路径;对照 ClickHouse Processors 与 PG volcano 模型。