TwKit
正在载入
TwKit

ScopeDB 的 approx_quantile 是我开搞 datasketches-rust 的主要原因之一。 查询各种分位数是常见的日志/事件分析需求… · @tison1096 · TwKit

@tison1096

ScopeDB 的 approx_quantile 是我开搞 datasketches-rust 的主要原因之一。 查询各种分位数是常见的日志/事件分析需求,比如经典的请求延迟 P50/P95/P99 查询。 目前 ScopeDB 线上的方案,针对小规模数据可用精确的 quantile 查询,大规模数据支持 t-digest 算法。我在 datasketches-rust 里落地了大量实现层面的优化,还跟 T-Digest 的作者讨论确定了极限值的处理方式,算是从生产实践里补齐了论文的空白。 目前 datasketches-rust 仓库里躺着 DDSketch 和 UDDSketch 的两个算法实现。虽然 DataSketches 的老大哥 Lee Rhodes 几次三番跟我说小伙子用用 KllSketch 吧,要不 T-Digest 也行啊,DDSketch 这种桶估计很容易出很大的秩误差 ... 奈何用户对 P99 这种查询,在乎一般是绝对值误差。还有一些关于数据到来顺序是否影响查询结果的细节问题。 很多友商倒是提供了不同的 approx_quantile 实现,甚至直接提供函数返回中间 sketch binary state 用于自行组合。ScopeDB 的内部实现差不多也长这样,但是提供给用户还是有点抽象了。不过不同的分位数算法处理不同的场景需求,或许是可以考虑的。

曝光 445 · 评论 0 · 点赞 7 · 书签 0

查看原帖