本文参考了部分互联网公司的实时数仓模型,结合目前所掌握的数仓建设的知识,简单介绍一下如何建设一个实时数仓。
一、实时数仓建设的背景
随着互联网的发展,越来越多的业务指标需要实时查看,以便于更好的进行业务分析,尤其在举行活动的时候,能够更好的把握活动的各项指标趋势,从而更好的调整策略,达到活动的目标。
二、技术选型
与flink实时处理最密不可分的就是kafka,其次flink实时数据存储还有mysql、hbase、es、Druid等还有部分公司内部开发的数据存储。作为刚开始的公司构建实时数仓,选用市面上开源的数据库就足够可以使用了。
三、数据仓库的建设
1、实时数仓的层级
在离线数仓中,大部分都会分为数据源、数据明细层、数据汇总层、面向业务层。而在实时数仓中,数据源和面向业务层直接配置成一种可实时传输数据的数据存储就好,不做过多处理,因为实时中间处理层越多,数据准确性也会越低,这边实时数仓主要内容是在数据明细层和数据汇总层。
2、实时数仓各层级的技术选型
数据源:直接配置为kafka实时消息传输;
数据明细层:一般也会选择kafka作为数据存储,如果是这层做成大宽表的话,可以选择druid,或者hbase
数据汇总层:对数据进行高度汇总后的数据,这层一般也会选择kafka作为数据存储,这样需要保证各层级的数据通过kafka能够产生依赖。
应用层:应用层根据不同的业务类型选用不同的数据存储,如果结果需要能够快速搜索,可以选用es,如果结果需要进行多维数据统计分析,可以选用druid,如果结果数据量不是很大的话,最好选用mysql,相对来说,mysql的稳定性要好一点。
维度存储:维度如果是稳定并且数据量不大的情况下可以选择mysql,但是如果维度经常变动或者字段经常增加的话,最好选用hbase进行存储。
3、实时数仓的模型设计