单份 Parquet 文件实现极速下钻仪表盘

Fast drilldown dashboards from a single Parquet file

单份 Parquet 文件实现极速下钻仪表盘

每月都有新的对象存储创意涌现,这次我尝试用单个 40MB 的 Parquet 文件构建客户分析仪表盘。无需数据库或查询引擎,仅靠 R2 存储桶和 Hyparquet 浏览器端读取器,配合 HTTP 范围请求,就能实现毫秒级响应的下钻分析。我将 NYC 311 数据集预计算为数据立方体,利用 Parquet 的行组统计信息,让浏览器只下载必要的数据片段。这种架构将复杂性全部前置到数据管道,不仅大幅降低了延迟,还完美适配了固定图表和粗粒度更新场景。

在分析领域,当你手中只有对象存储时,万物皆似范围请求。
  1. simonw

    数据在传输过程中会经过一个小型的 Cloudflare Worker,因为免费的 r2.dev URL 存在速率限制。

    对于 40MB 的文件,我建议直接托管在 GitHub Pages 上——这本质上是一个免费的、支持 CORS 的 CDN,并且支持 HTTP 范围请求,因此你应该无需动用 Cloudflare Workers 就能让那个演示跑起来。

  2. wyck

    乍一看(我还没实测),这似乎是个能大幅节省成本和运行时间的方案,但仅适用于刷新频率高于 5 分钟的数据集。受文件大小和构建时间影响,你可能无法通过刷新按钮获取该窗口之外的“最新”数据?我在想是否能采用混合方案,将历史 Parquet 文件与实时查询结合起来。

  3. mrbluecoat

    这是一种巧妙的技术复用,但现实来看,仅当数据集是静态的,且范围请求的负载小到能塞进一个 HTTP 响应时,才值得这么做。

    > 你的流水线必须足够快地重建每个客户的文件,以满足更新频率的要求。……数据是按较粗的调度更新,而非实时更新

同日更多故事

2026-08-24