
在最近一篇由 Zero Trust 产品套件背后的工程团队撰写的文章中,Cloudflare解释了为什么选择TimescaleDB而不是ClickHouse来为其内部平台增加分析和报告功能。作者强调了存储分析数据与配置数据的简单性与专用 OLAP 系统的性能之间“惊人的平衡”。
Cloudflare 强调了工程中极简主义的重要性,并解释了如何构建数字体验监控(DEX),这是一个内部可观测性平台,提供了对 Cloudflare Zero Trust 环境中设备、网络和应用性能的可见性。
团队构建了一个配置平面和一个分析平面,前者用于创建和管理合成测试的界面,后者是一个从 WARP 客户端收集结构化日志、存储并在仪表板中可视化的摄取管道。
虽然 Cloudflare 自 2017 年以来一直在使用 ClickHouse,但直到最近还是 Cloudflare 的高级软件工程师的Robert Cepa解释了为什么团队选择不在这个项目中使用 ClickHouse:
ClickHouse 中默认且最常用的表引擎 MergeTree 针对高吞吐量批量插入进行了优化。它将每个插入写入单独的分区,然后运行后台合并以保持数据可管理。这使得写入非常快,但当它们以许多小批量到达时则不然,这正是我们的情况,有数百万个单独的设备每 2 分钟上传一个日志事件。太多的小写入可能会触发写入放大、资源争用和节流。
为了保持初始版本的简单性,并在四个月内交付一个可用的 DEX MVP,团队使用了 PostgreSQL 来处理配置数据和分析日志,启动时处理每秒 200 次插入,对于大多数客户来说查询延迟在几百毫秒内。但 PostgreSQL 本身不是解决方案,Cepa 补充道:
随着采用的增长,我们扩展到每秒 1000 次插入,我们的表增长到数十亿行。那时我们开始看到性能下降,特别是对于那些在数万台设备上查询 7 天以上时间范围的大型客户。。
随着项目增长到数十亿设备日志,团队探索了预计算聚合(降采样)以提高性能,预计算并提前存储摘要,而不是反复查询原始数据。这种改进促使查询性能提高了 1000 倍,以前需要几秒钟才能渲染的图表现在可以即时显示,即使是在成千上万的设备上进行 7 天的查看。

来源:Cloudflare 博客
由于 PostgreSQL 不会自动刷新物化视图或管理表分区,团队转向了TimescaleDB,因为它支持列存储和稀疏索引。TimescaleDB 在 Apache 2.0 许可下可用,是一个开源的时间序列数据库,它是 PostgreSQL 的扩展构建,优化了时间戳数据的存储和查询,同时保持了完整的 SQL 兼容性和 ACID 属性。
由于 TimescaleDB 通过自动分区管理和降采样自动化聚合和数据保留,Cloudflare 能够通过将 PostgreSQL 扩展集成到其现有设置中来简化其内部基础设施。Cepa 总结道:
不是每个团队都需要一辆需要 100 辛烷值燃料、碳陶瓷刹车和超高性能赛车轮胎的超专业化赛车:虽然这些元素中的每一个都提高了性能,但以维护和独特性的形式拥有这些物品确实有成本。对于 Cloudflare 的许多团队来说,TimescaleDB 在存储分析数据的简单性与配置数据在同一架构之间取得了惊人的平衡,同时还获得了专用 OLAP 系统的许多令人印象深刻的性能。
Cepa 对 TimescaleDB 压缩 hypertable 与 PostgreSQL 表进行了基准测试,根据查询类型和时间范围,性能提高了 5 倍到 35 倍,这要归功于压缩和稀疏索引。社区主要质疑他们不使用 Clickhouse 的决定。在Hacker News上,用户 arunmu 评论道:
不使用他们已经用于分析的 Clickhouse 的原因含糊不清。Clickhouse 支持 JSON,可以重写为更结构化的表使用 MV。聚合和其他性能调优步骤是使用 Clickhouse 的基础。
TimescaleDB 背后的公司 TigerData 的联合创始人Ajay Kulkarni回应道:
PostgreSQL 与 TimescaleDB 完成了工作。为什么要把事情复杂化呢?
CDS UK 的解决方案架构师 Jamie Lord写道:
对于已经投资于 PostgreSQL 生态系统的团队来说,这代表了引人注目的演变而不是革命。你保留了所有的现有工具、知识和操作程序,同时获得了与专门构建的 OLAP 系统相媲美的分析能力。

来源:Cloudflare 博客
在实施 DEX 项目后,TimescaleDB 已被采用作为其他 Cloudflare 项目中原始日志之上的聚合层,例如 Zero Trust Analytics & Reporting,为每秒摄入数百万行的系统生成分析和长期报告。
原文链接:
https://www.infoq.com/news/2025/07/cloudflare-timescaledb-olap/
评论