PolymarketClickHouse Workshops

08 收尾

证明本专题已完成、停止本地运行的组件,并理解生产化扩展路径。

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

最终验证

SELECT
    (SELECT uniqExact(condition_id) FROM polymarket.markets FINAL) AS markets,
    (SELECT count() FROM polymarket.price_ticks) AS ticks,
    (SELECT count() FROM polymarket.trades_clean) AS trades,
    (SELECT count() FROM polymarket.market_midpoints_1m) AS midpoint_minutes,
    (SELECT max(event_at) FROM polymarket.price_ticks) AS newest_tick;

当 markets、ticks 和 midpoint_minutes 都大于零,并且 newest_tick 与本次运行 相符时,你就完成了。交易清淡的实时数据源确实可能没有任何已对账的 交易;fixture 模式则总会产生交易数据。

你构建了什么

  • 无需任何凭据的公开市场发现;
  • 一条带心跳、停滞检测、重连和 REST BBO 回退的实时 WebSocket 链路;
  • 一条带重叠窗口和确定性 ID 的公开交易对账链路;
  • 围绕真实过滤条件设计的、带类型的 ClickHouse 表;
  • 一个在插入时计算的一分钟报价中间价聚合;以及
  • 一个 Cloud 仪表板,或与之等效的已保存 SQL 可视化。

停止本地采集器

docker compose --env-file .env.polymarket down

这会删除这个无状态容器。Cloud 中的数据和已保存的查询都会保留。

可选的 Cloud 清理

只有当你不再需要实训数据时才执行:

DROP DATABASE polymarket;

按你所在组织的策略,通过 clickhousectl 或控制台删除 Cloud 服务,或让它进入空闲状态。

这套方案在生产中如何扩展

本课程之所以直接写入,是因为数据源是 HTTP/WebSocket API,而且数据量 很小。如果生产环境中已有一个中继在向 Kafka、Kinesis、Pub/Sub 或其他 受支持的流发布数据,就使用 ClickPipes,以获得托管的 offset 管理、schema 映射、背压处理和 错误处理。不要只为了让方案看起来更"分布式"就加一个消息代理。

回到课程目录,或者把这条路径与 AI SRE 专题做个对比。

本页内容

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

ZH