1.4 数据仓库基本架构
目前,数据仓库比较主流的架构有Kimball数据仓库架构、独立数据集市架构、辐射状企业信息工厂Inmon架构、混合辐射状架构与Kimball架构。通过比较不同的数据仓库架构,可以对数据仓库有更加深入的认识。
Kimball数据仓库架构如图1-3所示。
Kimball数据仓库架构将数据仓库环境划分为4个不同的组成部分,分别是操作型系统、ETL(Extract-Transform-Load,数据的抽取、转换和加载)系统、数据展示区和BI(Business Intelligence,商业智能)应用。Kimball数据仓库架构分工明确,资源占用合理,调用链路少,整个系统稳定、高效、有保障。其中,ETL系统高度关注数据的完整性和一致性,在输入数据时就对其质量进行把控,将不同的操作型系统源数据维度进行统一,对数据进行规范化选择,提高用户使用的吞吐率。数据展示区中的数据必须是维度化、包含详细原子、以业务为中心的。坚持使用总线结构的企业数据仓库,数据不应按照个别部门的需要来构建。最后一个主要组成部分是BI应用,该部分的设计可以简单也可以复杂,按照客户的需求而定。
图1-3 Kimball数据仓库架构
采用独立数据集市架构,分析型数据以部门来部署,不需要考虑企业级别的信息共享和集成,如图1-4所示。
图1-4 独立数据集市架构
数据集市是按照主题域组织的数据集合,用于支持部门级的决策。针对操作型系统源数据的数据需求,每个部门的技术人员从操作型系统中抽取自己所需的数据,并按照本部门的业务规则和标识,独立展开工作,解决本部门的数据信息需求。这种架构是比较常见的,从短期效果来看,不用考虑跨部门的数据协调问题,可以快速并利用较低成本进行开发,并且采用维度建模的方法,适合部门级的快速响应查询,但是从长远来看,这样的数据组织方式存在很大的弊端,分部门对操作型系统源数据进行抽取、存储造成了数据的冗余,如果不遵循统一的数据标准,部门间的数据协调将非常困难。
辐射状企业信息工厂(Corporate Information Factory)Inmon架构由Bill Inmon提出,可以简称为CIF架构或Inmon架构,如图1-5所示。在CIF环境下,从操作型系统中抽取的源数据首先在ETL过程中被处理,这个过程被称为数据获取。从这个过程中获取的原子数据被保存在符合第三范式的数据库中,这种规范化的、存储原子数据的仓库被称为CIF架构下的企业数据仓库(Enterprise Data Warehouse, EDW)。EDW与Kimball数据仓库架构中的数据展示区的最大区别就是数据的组织规范不同,CIF环境下的EDW按照第三范式组织数据,而Kimball数据仓库架构中的数据展示区则符合星形模型或多维模型。与Kimball数据仓库架构类似,CIF提倡协调和集成企业数据,但CIF认为要使规范化的EDW承担这一任务,而Kimball数据仓库架构则强调具有一致性维度的企业总线的重要性。
采用CIF架构的企业,通常允许业务用户根据数据细节程度和数据可用性要求访问EDW。各部门的数据集市通常也采用维度结构。
图1-5 CIF架构
最后一种架构是将Kimball架构和CIF架构混合的一种架构,如图1-6所示。
图1-6 混合辐射状架构与Kimball架构
这种架构利用了CIF中处于中心地位的EDW,但是此处的EDW与分析和报表用户完全隔离,仅作为Kimball数据仓库架构中数据展示区的数据来源。Kimball数据仓库架构的数据展示区中的数据是维度化、原子、以过程为中心的,与企业数据仓库总线结构保持一致。这种方式综合了Kimball和CIF架构的优点,解决了EDW的第三范式的性能和可用性问题,可以离线装载查询到数据展示区,更适合为用户和BI应用产品提供服务。
在了解了几种主流数据仓库后可以发现,每种架构都有自己适用的场景,但也都存在一定的局限性。局限性包括开发难度、数据展现难度或数据组织的复杂程度等,各企业在组织自己的数据仓库时,应该充分考虑自己的生产现状,选用合适的一种或多种数据仓库架构。
本数据仓库项目按照功能结构可划分为数据输入、数据分析和数据输出3个关键部分,如图1-7所示。
本数据仓库项目基本采用Kimball数据仓库架构类型,包含高粒度的企业数据,使用多维模型设计。数据仓库主要由星形模型的维度表和事实表构成。数据输入部分负责获取数据,分别对用户行为数据和业务数据进行采集,不同的数据来源需要采用不同的数据采集工具。数据分析部分则承担了Kimball数据仓库架构中的ETL系统和数据展示区的任务。ETL系统主要用于对源数据进行一致性处理,还有必要的清洗、去重和重构工作。数据仓库的数据来源比较复杂,直接对源数据进行抽取、转换和装载往往比较困难。这部分工作主要在图1-7中的ODS层完成。在ODS层对数据进行统一的转换后,数据结构、数据粒度等都完全一致。后续数据抽取过程的复杂性得以大大降低,同时最小化了对业务系统的侵入。
图1-7 本数据仓库项目采用的架构
后续数据的分层搭建则按照维度模型组织,得到轻度聚合的维度表和事实表,并针对不同的主题进行数据的再次汇总,方便数据仓库对多维分析、需求解析等提供支持,为下一步的报表系统、用户画像、推荐系统和机器学习提供服务。