建设数据仓库的最初目的,一是解决大数据计算数据来源问题,二是提供即席查询,供产品、模型及其他相关人员做数据调研使用。
传统数据仓库方法论分为两派,分别是Inmon和Kimball,这两套理论分别由Bill Inmon和RalphKimbal提出。
Kimball面向业务,以最终业务为导向
,从流程上看是自底向上的,即从数据集市到数据仓库再到数据源(先有数据集市再有数据仓库)的一种敏捷开发方法。
Inmon 则是面向整体数据,侧重于数据的处理,从中抽取实体-关系,
从流程上看是自顶向下的,即从数据源到数据仓库再到数据集市的(先有数据仓库再有数据市场)一种瀑布流开发方法。
相比较而言,从软件开发形式上,Inmon更传统,Kimball更加贴合时代的发展,但并不意味着哪个好:Inmon开发周期长但后期较易维护,Kimball则因为面向业务,使用的数据都是业务主题数据,所以开发难度小,周期短,但是后期维护或者二次开发难度过大。所以建模理论也是需要根据具体业务场景来选择,在实际数据仓库建设中,往往会借鉴两种数据仓库理论。
BBD数仓建模更多偏向Inmon的方法论,采用星形模型进行数仓建模,中间是事实表,四周是维度表。
主要数据源是数据平台MySQL,汇总了BBD合规采集的所有数据。KUNLUN数据主要是离线关联方,是通过工商数据解析获得的全国所有企业的关联图谱数据,然后通过抽取得到4度关联方结构化数据。第三方数据是业务反哺数据。
起初,只采用Sqoop全量抽取的形式,由于涉及到MySQL删除逻辑的一些问题,无法实现增量抽取。ODS层是贴源层,也是操作数据层,从数据源抽取的数据都存储在这里,通过Spark-SQL做关联,合并获得相对较宽的表,存储到DW。然后通过Spark计算企业相关指标或者其他一些统计类信息。DM层的命名可能会引起歧义,这一层并不是集市层,而是为了方便调研和测试等相关工作,提供一个OLAP查询引擎。
后来由于个别表数据量剧增,每日增量过大,对MySQL性能影响较大。对于这些表,数据平台采取写入HBase的解决方案,同时实现数仓的增量更新需求。
其中,为了应对多种数据源增量更新,采用了阿里开源的Canal框架。同时还增加了调度监控等其他功能,其技术架构如下:
企业数据建设是大数据时代的一个核心工程,特别是对于像BBD这样的大数据企业。一般来说,企业数据建设大体分为数据化,智能化,业务化。
-
数据化
:是指所有的业务或企业相关做数据化,线上化,从而收获数据沉淀。
-
-
业务化
:数据驱动业务,通过挖掘数据价值提供新的业务增长点。
很多企业正在加大对数据仓库、数据湖、数据平台、数据中台等数据工程建设的投入,希望能最终实现数据驱动企业增长。BBD的数据建设也在不断持续发展,数模中台是未来数据建设的一个方向,在拥有数据平台和数据仓库后,必然要再往前迈一步,更聚焦业务,更多关注企业层面的数据治理以及数据资产化的问题,包括数据资产化管理(质量,成本,安全),数据服务的构建,数据体系化建设(统一模型和指标,或者说统一指标和模型规则,这样针对不同数据源也能快速响应)。其实,中台就是一个企业能力复用的平台,是为前台,为业务而生的平台。
参考文献:
《Building the Data Warehouse》,William H.Inmon
《The Data Warehouse Toolkit》,Ralph Kimball
《大数据之路--阿里巴巴大数据实践》,阿里巴巴数据技术及产品部
《说透中台》,王健