阿里巴巴集团很早便将大数据视为其战略目标,并在各业务中广泛依赖数据支持运营。那么,阿里巴巴究竟是如何构建自己的数据仓库模型的呢?阿里巴巴的数据仓库模型经历了多个发展阶段。
在第一阶段,阿里巴巴的第一代数据仓库系统基于Oracle构建,主要目的是满足报表需求。数据以与源结构相同的方式同步到Oracle(称为ODS层),数据工程师基于ODS数据进行统计分析。这个阶段的数据架构只有两层:ODS和DSS。尽管采用了部分维度建模中的缓慢变化维方式来处理历史数据,但整体上并没有形成系统的模型方法。
随着阿里巴巴业务的迅速扩张,数据量也在快速增长,单一的Oracle系统难以应对。于是,公司引入了MPP架构的Greenplum,并开始优化数据架构,旨在通过模型技术解决烟囱式开发的问题,消除冗余,提高数据一致性。在此期间,数据团队尝试将工程领域流行的ER模型与维度模型结合,构建了一个四层的模型架构:操作数据层(ODL)、基础数据层(BDL)、接口数据层(IDL)和应用数据层(ADL)。ODL与源系统保持一致;BDL引入ER模型,增强数据整合;IDL基于维度模型构建集市层;ADL则负责应用的个性化和基于展示需求的数据组装。然而,构建ER模型过程中遇到了诸多挑战,尤其是在快速变化的互联网业务环境中,这表明在不成熟的业务背景下,构建ER模型存在较大风险。
进入第三阶段,随着阿里巴巴业务和数据的持续快速发展,分布式存储计算平台如Hadoop迅速崛起。与此同时,阿里巴巴自主研发的分布式计算平台MaxCompute也在不断推进。在此背景下,公司开始构建第三代模型架构,旨在寻找既能适应阿里巴巴集团业务发展,又能充分利用分布式计算平台能力的数据模型方式。最终,公司选择了以Kimball维度建模理论为核心的方法论,并对其进行升级和扩展,形成了阿里巴巴集团的公共层模型数据架构体系。这一架构的核心目标是解决数据存储和计算的共享问题。当前,阿里巴巴集团已发展为多个业务单元(BU),各业务产生大量数据,且每年以近2.5倍的速度增长。数据增长速度远超业务增长速度,这对成本控制提出了严峻挑战。为此,阿里巴巴建立了一套统一的数据整合和管理方法体系(内部称为“OneData”),涵盖一致性的目标定义、模型设计方法以及配套工具。