如何构建企业数据仓库?
大数据时代,如何构建企业数据仓库?个人认为,目前数据仓库类型主要分为两种,一种是离线数据仓库,一种是实时数据仓库,这两种数据仓库的主要区别在于业务对于数据计算延迟的敏感度。离线数据仓库一般计算的数据是 T-1天,既今天只能看到昨天的计算数据,适合对数据产出时间不是那么敏感的业务,比如你现在看到的一些网站对你文章阅读量的统计信息。实时数仓在于对数据的实时性计算,业务同学可以实时监测到业务指标的变化,从而及时的做出相应决策来应对业务的调整。这两种数仓虽然从技术实现上有一定差异,但是整体模型构建上,却有很多的相似点。
离线数据仓库设计离线数据仓库的设计,主要分为三层结构,ODS层(原始数据层),DWD层(公共明细层)和DWS(公共汇总层),APP层(业务数据应用层)。一般ODS层的数据是直接来源于线上业务,没有经过任何的加工处理,所以你在进行模型构建的时候,第一步需要对ODS层的数据进行处理转换,加工出你所需要的数据。
开发同学在进行模型构建时,要尽可能保证自己开发出的数据模型的公用性,这样你开发出来的数据更好的具有统一性,保证计算逻辑的统一,其次别的同学也可以使用你的数据,进一步降低口径不一致所带来的问题,同时也便于你维护你所开发出来的数据。所以DWD层和DWS层所做的事情就是维护数据的统一,同时,也进一步降低了任务计算的成本,因为计算量较大的任务都做成公共层,每天只计算一次,而不是每个同学都去计算。
APP层是对DWD层或者DWS层的数据的应用,一般如果有业务方或者BI同学找你要数据时,可以让他们的数据任务直接从DWD或者DWS层取出相关的指标数据,指标具体怎么拼接,怎么使用,交给业务方来具体使用,你只需要提供公共数据就可以了。
实时数据仓库设计实时数据仓库的设计和离线数据仓库的整体架构很类似,不过实时数据仓库使用消息中间件来进行数据的传输。实时数据仓库一般需要使用实时计算引擎(比如Flink)、消息中间存储(Kakfa消息中间件)、计算结果存储(HBase,HDFS等等)。整体上实时数据仓库也可以分为三层,ODS、DWD和DWS层、APP层。线上业务数据直接到Kafka或者其他的消息存储系统,使用Flink实时消费数据计算,然后计算的中间结果存储到HBase或者继续使用Kafka来进行存储,最后使用统一的接口服务层(比如 OneService) 为业务使用方提供Dubbo接口获取指标数据,前段在进行展示。数据同学在开发实时任务时,也应该考虑到数据任务通用性、可维护性、降低计算资源成本,一次开发,都可以使用,毕竟实时计算任务消耗的集群资源还是很大的。
总结实时数仓和离线数仓从整体架构设计上很类似,虽然在底层实现所用到的技术有很大差异,但是思想都是不变的。数据仓库最终的目的是为业务服务,更好的指导业务的运营和发展,所以在开发数据任务的同时,也要考虑到业务方使用是否方便、数据准确等。
我是Lake,专注大数据技术、程序员经验、互联网科技见解分享。如果我的问答对你有帮助的话,欢迎你点赞转发或者关注我,你的一个小小的鼓励,就是我持续分享的动力,感谢。Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有