实时BI(四)低成本的数据准实时处理思路

今天分享的是实时BI系列话题的最后一篇文章,所以简单回顾一下前面的几次分享:第一篇文章讲解了BI对数据T+1同步机制的原因和过程;第二篇文章讲解了如果要实现实时或者准实时,对传统数据仓库分层的ETL架构要做出哪些调整;第三篇文章讲解了大数据架构下的T+1模式的批处理就是离线数据处理,也介绍到了不同的技术框架下实时数据处理的方式,以及如何理性的选择离线数据和实时数据技术处理方案。

数据准实时处理场景

今天这篇文章我就来分享下,在不使用大数据技术框架、也不使用流式数据、实时数据处理框架的情况下,企业就那么几个指标就想做成准实时的,比如10秒钟刷新一次交易数据、交易金额,如何实现?

数据可视化 - 派可数据商业智能BI可视化分析平台

理性一点的朋友就会说了,几秒钟看交易数据、交易金额有什么用啊,几秒钟能进来多少钱啊,根本就没有必要看。确实如此,我也认为没有必要。没有必要的原因可能是因为这个数据不会有太大的变化,如果变化大比如一秒钟增加十几万,十秒钟上百万的交易金额,这个是不是就很有点意思了?我们正好就有这样的客户,几秒钟时间大屏的数据刷一下,交易额就增加了几十万、有时上百万,一年五千个亿往上的交易金额,这个只是其中某一个渠道的交易金额。那这个数据就非常有意思了,很刺激,隔一会那个牌子就跳一下,再算下变了多少万了。

数据可视化 - 派可数据商业智能BI可视化分析平台

每次交易金额可能就几百块以内,所以每秒钟交易的笔数累计下来就非常的多,一年下来几十亿条交易数据很正常。如果直接用SQL去查询,有可能页面每10秒钟刷新一次,前一次这个指标的ETL里面的查询都没有执行完,数据还没有填充到数据仓库表,后面的查询就又来了。这种实现方式明显是有问题的,效率比较低。

数据准实时处理思路

那怎么来实现呢?就跟一层窗户纸一样,一捅就破,一讲大家就明白了。

多做几个ETL,第一个ETL每天晚上执行一次,计算从今年开始到今天累计的交易金额,这个值算出来单独存起来。哪怕是全量计算,也不怕,晚上执行,哪怕执行一个小时我也不怕,肯定能算的完。

      数据仓库 - 派可数据商业智能BI可视化分析平台

第二个ETL每小时执行一次,计算从今天零点到现在当前小时的交易金额,到这个阶段数据查询的范围就变小了,又算一个值存储起来。

第三个ETL每分钟执行一次,计算从当前小时零分到现在这一分钟计算的值,存起来放着。

最后一个ETL每十秒钟执行一次,计算这一分钟里交易金额,又算出一个值更新到一个表里面。同时,这个更新的值和前面三个ETL算出来的值一加起来,不就是全年累计的实时交易金额吗?这个问题就解决掉了。

这个过程实际上就是利用时间日期戳和ETL做了增量抽取更新,以及增量计算,把整个数据表的聚合汇总砍成一节一节的,不同的ETL计算不同的时间段的数据,这样整体数据量会比较小。调度时间间隔大的ETL,执行的数据查询范围就越大。调度间隔小,执行的数据查询范围就越小。

数据可视化 - 派可数据商业智能BI可视化分析平台

这种方式大家可以在项目上试一试,是完全可以实现一些准实时效果的。当然,一个指标就用了四个不同的ETL调度。十个指标,理论上就需要四十个。当然按天或者按小时执行的指标视情况可以放到一个ETL调度里,减少一些维护工作量。但总体上来说指标越多,ETL的调度配置就会越多,后期维护成本自然也会比较高一些。

但无论如何,这种方式还是非常经济实惠的,有技术难度吗?并没有。就是靠ETL的调度设计来解决这个问题,这个就是经验。好经验当然要分享给大家,相信以后有机会能够用得到。

猜你喜欢

转载自blog.csdn.net/weixin_44958787/article/details/125821847