DEV Community

NevoSayNevo
NevoSayNevo

Posted on

Polymarket 如何用 Postgres + ClickHouse 扩展数据架构

预测市场的数据增长极快。随着 Polymarket 月交易量达到数十亿美元,其 PostgreSQL 数据库在分析负载下开始不堪重负。他们最终引入 ClickHouse 作为专用分析引擎,成功解决了这个问题。

问题:PostgreSQL 遇到瓶颈

和许多快速成长的初创公司一样,Polymarket 早期所有业务都跑在 PostgreSQL 上,包括:

  • 交易、订单、用户账户等事务操作
  • 内部仪表盘
  • 公开排行榜

随着链上活动激增,出现了两个严重问题:

  • 仪表盘分析查询频繁超时
  • 排行榜功能消耗大量资源,导致整个数据库变慢

他们急需将 OLTP(事务型)和 OLAP(分析型)工作负载分离。

解决方案:Postgres + ClickHouse 混合架构

Polymarket 保留 PostgreSQL 处理事务型工作(它在这方面表现优秀),同时将所有重度分析工作迁移到 ClickHouse —— 一款专为实时分析设计的超快列式数据库。

他们构建了一个现代数据仓库,主要数据流入路径包括:

  1. 链上交易数据 → 通过 Goldsky(子图/流式)摄入
  2. Web 分析数据 → 使用 ClickPipes 从 S3 加载
  3. 链下元数据 → 从 Postgres 同步

用物化视图重构排行榜

最大的改进来自于排行榜的重构:

  • 以前:在 Postgres 上运行复杂查询 → 经常超时
  • 现在:ClickHouse 物化视图 → 计算时间缩短至毫秒级

效果非常显著:

  • 排行榜查询从超时变为 50ms 以内
  • 支持更细粒度的分类排行榜(按市场类型、交易量层级等)
  • API 可稳定处理每秒数百次请求,平均延迟约 25ms

核心收益

  • 解放 Postgres —— 现在专注于事务处理,性能大幅提升
  • 实现大规模实时分析
  • 功能迭代更快 —— 新排行榜类别和仪表盘开发成本大幅降低
  • 分析负载成本更优

给开发者的经验教训

  1. 尽早分离 OLTP 和 OLAP —— 不要等到出问题再行动。
  2. ClickHouse 在高写入、高查询的分析场景(尤其是时序和事件数据)表现极为出色
  3. 物化视图 是 ClickHouse 最强大的特性之一,能大幅加速复杂聚合查询。
  4. 现代摄入工具(Goldsky、ClickPipes、dbt 等)让搭建数据仓库比以前容易得多。
  5. 混合架构更具优势 —— 用合适的工具做合适的事,而不是把所有东西塞进一个数据库。

Polymarket 的技术栈是务实扩展的优秀范例:保留 Postgres 的强项,同时在需要极致分析速度的地方引入 ClickHouse。


你有没有将分析负载迁移到 ClickHouse 或其他 OLAP 数据库?

遇到了哪些挑战?

欢迎在评论区分享你的经验。


Tags: #ClickHouse #PostgreSQL #数据库扩展 #数据工程 #Polymarket #预测市场 #后端开发 #性能优化 #OLAP #技术栈

Top comments (0)