为什么使用 ClickHouse 而不是 Postgres?
GROUP BY 查询。它是一个 OLAP 数据库,而 Postgres 则是一个为事务型工作负载设计的 OLTP 数据库。
OLTP,即在线事务处理数据库,旨在管理事务性信息。这类数据库的首要目标——Postgres 就是其中的经典代表——是确保工程师可以向数据库提交一组更新操作,并确信这些更新要么全部成功,要么全部失败。具备 ACID 特性的事务保障,是 OLTP 数据库的核心关注点,也是 Postgres 的一大优势。由于这些要求,OLTP 数据库在对大型数据集执行分析型查询时,通常会遇到性能瓶颈。
OLAP,即在线分析处理数据库,则是为满足这类需求而设计的——也就是管理分析型工作负载。这类数据库的首要目标,是确保工程师能够高效地对海量数据集进行查询和聚合。像 ClickHouse 这样的实时 OLAP 系统,能够在数据被实时摄取的同时完成这类分析。
如需更深入地比较 ClickHouse 与 PostgreSQL,请参阅这里。
如需了解 ClickHouse 和 Postgres 在分析型查询上的潜在性能差异,请参阅 Rewriting PostgreSQL Queries in ClickHouse。
迁移策略
实时复制 (CDC (变更数据捕获) )
手动批量加载 + 定期更新
INSERT 命令,或通过导出和导入 CSV 文件来完成。完成初始迁移后,你可以按固定时间间隔从 PostgreSQL 同步变更,定期更新 ClickHouse 中的数据。
批量加载流程简单且灵活,但缺点是不支持实时更新。初始数据写入 ClickHouse 后,后续更新不会立即反映,因此你必须定期安排同步 PostgreSQL 中的变更。这种方法很适合对时效性要求不高的用例,但 PostgreSQL 中的数据发生变化后,这些变化在 ClickHouse 中出现会有一定延迟。
选择哪种策略?
从这里开始阅读 PostgreSQL 迁移指南。