PostHog 同时使用 ClickHouse 和 DuckDB 的对比文章,核心不是分出胜负,而是明确两者是不同场景的工具——就像洋葱和葱:长得很像,但用途完全不同。

ClickHouse 是”完整数据库”——长驻进程、水平扩展、自管理存储,具备物化视图、成熟压缩、稀疏主键和 MergeTree 家族引擎。它适合高并发、重复查询、实时分析的场景,比如 PostHog 的核心漏斗、趋势、留存分析。

DuckDB 是”进程内引擎”——嵌入式、单节点、无需服务器,要么作为查询引擎直接分析 Parquet/CSV 文件(用完即销毁),要么作为 .duckdb 持久化数据库文件。它适合即席查询、探索性分析、轻量级 ETL

PostHog 的具体分工:

  • ClickHouse:处理热分析数据(漏斗、趋势、留存、路径分析)——十亿级事件,需要近实时
  • DuckDB:处理数据仓库产品——用户自己的全部数据,通过 Duckgres(Postgres 协议包装器)让 BI 工具连接

两个有趣补充:

  • clickhouse-local:ClickHouse 的便携版本,类似 DuckDB 的轻量级模式,但官方定位是测试工具,不是生产服务
  • DuckLake:DuckDB 的数据湖格式,解决了 DuckDB 单节点存储限制,数据持久化在对象存储,元数据由 DuckDB 管理

来源:duckdb-vs-clickhouse-posthog

相关页面:duckdb · clickhouse · ducklake · posthog