理解数据仓库
之前在工作中参与了公司一个细分业务的宽表和数据仓库的建设,因此对数仓和宽表有了进一步的理解。
在我的理解中,数据仓库最大的特点是集成,即将不同的数据来源和不同形式的数据整合在一起。我们通常所说的数据库,一般都是遵循一定的标准范式的。比如,MySQL就遵循第三范式,具体内容包括三点:1、表中的每一个字段都是不可再分的原子;2、每一列都和主键依赖;3、每一列和主键的依赖是直接依赖,而非间接依赖。在这样的约束下,数据库可以很好地解决数据冗余的问题,但是它只能进行基本的增删查改的操作。而数据仓库的特点是去范式的,即它并不严格遵循数据库的范式要求,虽然这会造成数据的冗余,但可以很方便地进行复杂的数据查询来满足公司日益增长的数据需求。
图1:数据体系架构
从上图可以看出,数仓在整个数据体系中,它是位于日志采集等数据源和数据接入层之上的,底层数据通过一定的手段处理后,形成数据仓库,进而为公司的服务层和应用层提供数据支撑。
图2:通用的数据仓库分层
在图二中,我们可以进一步知道数据仓库体系内部是如何层级表示的:
1、ods层(operation database,即操作性数据库层),它的数据是保留源系统概貌,即它对日志采集、数据同步等手段得来的数据不做任何处理,进而为上游逻辑层提供原始数据,隔离对源系统的影响,同时方便追溯。
2、DW层(data warehouse),也就是我们所说的数据仓库层,它由下至上,分别由DWD(data warehouse detail,数仓明细层)、DWM(data warehouse market,数仓轻度汇总层)、DWS(data warehouse summary,数仓集市层)。其中,DWD的数据来源于ODS层,它通过对ODS层的数据进行初步清洗后,为上游提供原始数据,划分数据主题。DWM的数据主要来源于DWD层,以维度建模为主,按主题域建立一致性维度和一致性事实,为上游逻辑层提供加工明细数据,保留长期转换及轻度汇总数据。DWS层的数据主要来源于DWS层,可按业务和应用主题分类,满足特定的应用查询。
3、APP层,即公司的数据应用层和服务层,此时APP层可以高效地从DWM满足个性化的数据需求,而非从源数据系统获得数据。
数据仓库的价值
现在,随着公司规模增大,内外部数据量的增多,基本上大部分的公司都会着手数据仓库的建设,这是大数据时代的必经之路。总的来说,数据仓库对公司的价值可以体现在以下四点:
1、成本:数据仓库建设可以保证各个层级数据之间口径的完整性与一致性,减少数据冗余,也能实现计算结果复用,极大地降低数据系统的存储和计算成本;
2、效率:数据源统一建设后,可以减少数据需求的开发周期,改善各方用户使用数据的体验;
3、性能:良好的数据仓库模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐;
4、质量:数据仓库通过统一底层宽表,抽象出更多的公共指标,可以改善各个业务方取数逻辑混乱和计算错误的概率。
参考文章:
1、《大数据之路 阿里巴巴大数据实践》
2、https://mp.weixin.qq.com/s/Sz9NNJPpzoh6L4ZSzOH7Gg
3、https://mp.weixin.qq.com/s/bcyL3-oncpRVEVUBiV6DMQ