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