工具建设:数据分析工具如何提高查询速度

最近面试一个同学的时候,聊到了他负责的大数据取数平台。平台的主要是提供给业务、分析师等使用,支持他们在现成报表没有相关数据时,快速查询和分析自己想要的数据。

例如对dau做各种维度下钻分析,来定位数据出现波动的原因。或者在业务复盘的时候,查询某种口径下各个业务线带来的收入。

这位同学主要负责产品设计以及推广,但当问到如何提高查询效率,以便给到用户更好的查询体验时,能聊出来的东西就比较少了。

其实作为数据产品,尤其是偏工具的数据产品,应该对工具的逻辑有基本了解,这样可以帮助自己更好的进行产品设计和规划。

这篇就和大家聊一聊,当面对大数据量时,我们有哪些方案来进行优化,从而给到用户更好的体验。

一、冷热数据

很多时候业务整体的数据量很大,但常用的热数据很可能只是其中一部分。我们可以基于实际的使用需要,只支持部分数据的查询,从而减少数据量,提高查询效率。

例如,对于视频APP来说,曝光相关的数据量通常都比较大,大家经常会查询一些IP的“曝光 -> 点击 -> 播放”的链路数据。

可是对业务的实际查询情况做进一步分析就会发现,日常需要关注并查询的IP多数都是最近比较热的IP,并不是所有的IP都需要做类似查询。

这时就可以只支持这些比较热的IP的查询,当真的有用户需要查询其它IP的时候,再把数据加载进来。

二、抽样加速

在实际的数据使用过程中,有些分析不需要获得非常准确的数据结果,而是可以接受一定的误差。

例如一个应用的dau每天都在大几千万,我们要分析一下最近一个月dau的变化趋势。这时其实就不需要非常精确,每天的结果存在十几或者几十的误差,对最终分析没有什么影响。这时就可以对数据进行抽样,既满足的业务需求,又加快了查询速度,节省了存储资源。

三、预聚合

相信大家一定知道28法则,在使用数据的时候同样也存在类似的情况。例如一个指标有A、B、C、D、E一共5个维度,但使用的时候并不是每种维度组合都会用到,可能一般只会用到ABC和ABCD的组合。

这种情况下我们就可以进行预聚合,提前把ABC和ABCD的结果计算好,而不是用户选择之后从头开始计算,从而大大提高查询速度。

我们很多的报表就是这种情况,用户每次来查询的情况相对固定,使用预聚合就可以大幅提高效率。

除了以上常见的一些方式外,还有一些其它的方式,例如bucket加速、任务拆分等等。总之,对于一个查询工具来说,查询速度对用户的体验影响非常打。作为数据产品,要明白查询的基本原理,并且能结合业务实际情况给出可行的产品方案

作者:暮雪云然
一个会写代码的数据产品架构师

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部