采样 ↗ 是 analytics 中用于分析数据子集而非处理每个数据点的技术。在 Cloudflare Analytics 中,采样在保持高准确性和可靠性的同时,确保高效性能和可扩展性。本文全面概述采样的工作原理、使用原因及其对不同 Cloudflare 工具 analytics 的影响。
我们使用称为 Adaptive Bit Rate (ABR) ↗ 的采样方法,确保即使处理大型数据集,查询也能快速完成。ABR 根据查询复杂度和持续时间动态调整检索数据的详细程度。这种方法通过防止大型或复杂查询占用过多计算资源(否则可能拖慢或阻塞较小查询)来确保公平性。通过更公平地分配资源,ABR 使系统能为所有用户保持一致的性能,无论数据集大小如何。
为实现这一点,数据以多种分辨率(100%、10%、1%)存储,每种代表不同的采样百分比。运行查询时,ABR 根据查询复杂度和要检索的行数选择最佳分辨率。通过动态调整数据分辨率,ABR 优化性能并防止延迟。这与处理大型数据集时出现超时、错误或高成本的系统不同。
Cloudflare 的数据管道在全球网络中处理每秒超过 7 亿个事件 ↗(且仍在增长)。实时处理和存储所有这些数据将成本高昂且耗时。通过精心设计的采样方法,Cloudflare Analytics 在精度与性能之间取得平衡,提供准确且可操作的数据。
采样可实现:
- 可扩展性:在不损害洞察的前提下减少处理的数据量。
- 性能:加快 analytics 查询执行。
- 成本效益:最小化资源使用和存储需求。
采样数据高度可靠,可提供与完整数据集同样可信的洞察。Cloudflare 设计采样技术以确保捕获整个数据集的基本特征,提供可信赖的结果。
采样在其他领域也有类似应用,例如:
-
Google Maps:就像在线地图在缩小显示时展示低分辨率图像、放大时展示高分辨率图像——保持总像素数相对恒定——Cloudflare Analytics 动态调整采样率以高效提供洞察,确保无论数据集大小如何,查询都返回一致且准确的结果。
-
民意调查:与民调机构抽样部分人口以预测选举结果类似,Cloudflare 抽样部分数据以提供准确的系统级洞察。
-
电影帧:以 30 fps 而非 60 fps 观看电影不会改变整体体验,就像分析较少数据点仍能在 analytics 数据集中揭示相同模式和趋势。
我们承认,目前验证 ABR 查询结果的确切分辨率可能具有挑战性。不过,一般而言,你可以检查读取的行数。读取行数越多,结果分辨率越高。例如,基于数千行的结果很可能具有代表性,而基于仅几行的结果可能不太可靠。
在不久的将来,我们计划在查询结果中暴露置信区间,以便你精确了解结果的准确程度。
何时进行采样
- 采样通常应用于流量极高的数据集,完整数据分析不切实际。
- 对于较小的数据集,通常在不采样的情况下进行完整数据分析。
采样率
- 采样率因数据集和产品而异。
- Cloudflare 确保单个数据集内的采样率一致,以在查询间保持准确性。
对指标的影响
- 虽然采样减少了处理的数据量,但总计、平均值和百分位数等聚合指标会根据样本大小进行外推。这确保报告的指标准确代表整个数据集。
限制
- 采样可能无法捕获发生率极低的罕见事件。
analytics 界面中的采样
- GraphQL API:查询响应中包含采样元数据。更多信息请参阅 GraphQL Analytics API 采样文档。
- Workers Analytics Engine:更多信息请参阅 Workers Analytics Engine 文档。
- 仪表板 Analytics:如果可视化使用了采样数据,会显示带有采样数据百分比的图标。