1991年,《Building the Data Warehouse》作者Bill Inmon提出了数据仓库的概念,指出数据仓库是面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合。之后,关于数据仓库实施的方法论、架构及路径引发了诸多争议。1998年,Bill Inmon提出了新的企业信息工厂架构,该架构在不同层次上采用不同构件来满足不同的业务需求。Ralph Kimball的《The Data Warehouse Toolkit》问世后,其所提出的维度建模理论颠覆了Bill Inmon主张的三范式建模,主导了未来一段时间的数据仓库建模理论。由于早期数据量相对较小以及存储珍贵,数据仓库所依赖的硬件及软件环境相对单一,主要集中于Teradata和IBM一体机,低拓展性及高维护成本让多数中小银行望而却步。随着并行处理数据库的推出,数据仓库由一体机逐步向集群方式迈进,国内华为推出的Gauss DB成为代表性产品。
2003年,Google提出一种可拓展的分布式文件系统,该系统允许使用廉价的机器,并能确保数据具有较高容错性。随后,Google以GFS为基础推出Map Reduce和Big Table,三大核心技术形成了完整的分布式运算架构。Map Reduce将任务分解,在多个处理能力较弱的计算节点中同时处理分解后的任务,然后将结果合并从而完成大数据处理,是一套针对并行计算的编程模型。Big Table是一个大型的具有容错性和自治特性的系统,具有TB量级的内存和PB量级的磁盘存储空间,每秒可处理几百万的读写。受以上论文的启发,Doug Cutting于2004年开始逐步进行代码实现,在2006年分离出Hadoop项目并将其开源,从而带来了一场深刻的技术革命。在业务与效率的催生下,SQL引擎、流式计算及内存计算等组件得到快速发展。在国内,华为、阿里、星环等公司基于开源产品也相应地推出商业版本,推进大数据技术的应用。经过近几年发展,各大数据平台已逐步发展成熟。
建设银行自2017年左右开始利用大数据技术解决海量数据分析的问题,该行在实施新一代数据仓库架构前,主要采用软硬件一体的数据库和SAN来存储和处理数据,存在成本居高不下、扩展能力有限、支持的数据类型有限(不支持半结构化和非结构化)等问题。基于X86的服务器所搭建的大数据平台,在合理成本及高扩展性方面引起了业界的关注,同时MPP架构在海量数据计算及高容错性方面也具有较大优势。建设银行结合Hadoop及MPP的优势和特点,一方面,将MPP数据库技术产品应用于贴源数据区、应用计算区和实验数据区,降低Teradata平台的处理压力,为Teradata平台减负;另一方面,将Hadoop/Spark技术运用于历史数据归档区存储源系统和仓库海量备份数据。
招商银行数据仓库建设之路从1998年的Sybase到2002年基于DB2构建数据仓库平台,再到2013年重构TD仓库,建成了涵盖客户服务、产品销售、风险管理、绩效管理、监管审计等领域完整的数据应用平台。面对一体机数据仓库平台存储和算力无法匹配应用数据量高速增长的问题,2020年,招商银行正式启动数据使能平台建设,并提出“人人用数,人人都是数据分析师”的数据发展战略。随着云计算技术的蓬勃发展,云分布式架构以其灵活和高可用的优势,成为招商银行数据使能平台首选架构。该行利用华为Gauss DB构筑全新一代的云上数仓,实现对零售客户体验的实时监测和数字化呈现,更大的算力支撑使得跑批作业速度较之前得到大幅提升。
Hadoop技术体系在国内以商业化产品的方式运作,各厂商均对其进行封装,基于贵阳银行的升级需求,本文重点讨论华为旗下Hadoop产品Fusion Insight HD(简称FI)。FI对开源组件进行封装和增强,对外提供具有大数据处理能力的产品。通过HDFS分布式文件系统,可实现结构化与非结构化数据的大规模存储,同时引入基于内存计算的Spark升级版组件,可实现快速运算。此外,配置一套运维管理系统,监控整个集群是否健康运行。可以说,HD集群具有高可靠、高扩展、高容错、低成本等特点。基于Hadoop这一特点,其适合作为不需要高并发查询的数据存储平台。
Gauss DB200是华为基于Postgre SQL开发的企业级大规模并行处理关系型数据库。Gauss DB200采用MPP非共享存储架构,支持行存储和列存储,提供PB级别数据量的处理能力。在非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,数据被划分到各节点上,每台数据节点通过专用网络互相连接,彼此协同计算,作为整体提供数据服务,具有可伸缩、高可用、高性能、快速查询及事务一致性等优势,企业可将其作为快速运算、高速查询的首选。
贵阳银行于2016年引入华为FI大数据平台,同时为保障数据查询效率,还引入了惠普Vertica数据库以支持数据服务,依据Hadoop所提供的智能化的资源管理能力以及大规模、高并发的计算能力,使其承担贴源数据存储、共性加工运算等职能,加工后的数据通过镜像和数据映射同步至Vertica。Vertica高效的数据查询能力和事务处理能力可承担数据服务的职能。目前,该数据平台虽已平稳运行4年,但随着数据量的增长,部分问题也逐渐凸显:FI数据平台版本较低,许多组件性能不满足现实需要;随着业务量的提升,存储容量急须扩充;响应偏慢,计算能力亟须提升;Vertica数据库容量已严重不足,亟须寻找可替代的解决方案;数据底座能力被弱化,亟须夯实;Hadoop与Vertica间的融合度不够高。
为解决现有数据仓库存在的问题,贵阳银行通过升级FI及引入Gauss DB实现平台功能的增强和提升。从架构上看,一期是对“混搭式”数据架构的探索实践,数仓定位为全行基础数据存储,为全行提供基础数据服务。二期将践行一期经验,同时考虑Vertica存在的问题,将其逐步退出为数据试验区,并引入华为Gauss DB,进一步实现架构融合,增强数据仓库平台的基础算力,为数据分析、数据应用奠定基础。从数据模型上看,一期数据仓库在贴源数据的基础上,根据应用需要实现了轻粒度、小范围的共性加工数据整合,其数据模型体系无法屏蔽源系统变化带来的下游应用调整,随着新系统的建设,数据仓库数据源的数据结构势必发生一系列结构性变化,故二期采用规范化的整合层模型主题设计,进行标准化字段英文名及中文名、数据类型、精度、长度、码值等模型定义,贴源数据在进入整合层后进行标准化的转换与适配。在此种模型设计思路下,源系统数据结构发生变化,只需调整源系统数据与整合层模型之间的适配度,理论上就可以高程度地满足因源系统变化而带来的下游应用调整,从而提升数据仓库数据转换及数据适应能力。从版本上看,将对华为FI进行版本升级,升级后各组件性能得到大幅提升,同时与Gauss DB融合得更深。
依据业内先进成熟的经验及行内数据体系总体规划,将全行数据架构划分为数据产生层、数据集成层、数据整合层、数据加工层、数据工具层、数据应用层及数据管控平台、调度监控系统等层/模块。其中,数据整合层、数据加工层对应行内的数据仓库,作为统一的数据存储、整合、加工平台,并对外提供数据工具,实现数据服务输出能力,如图1所示。
融合数仓主要有4层架构,包括技术缓冲层、贴源层、整合层、共性加工层,重新设计后的数据仓库将数据服务剥离,实现轻型、高效运转,承担全行数据底座的职能。该架构具有如下特点。
整合各源系统数据,实现了全方位的数据整合。
一次加工多次使用,服务多个不同集市,实现数据和指标共享,减少数据重复计算与存储。对常用的业务口径进行统一定义和维护,有利于实现可信的单一视图,提高数据使用效率和数据标准化水平。
将数据加工与历史存储分离,极大地提高了ETL处理效率和报表前端访问效率。共性加工层采用逆范式及维度建模的设计方式,使其业务含义易于理解,方便业务进行自定义查询;整合层采用3NF与宽表设计相结合,既满足集市对时效性的需求,又减少了数据冗余。
将华为FI打造为数据湖,存储贴源数据、历史数据、归档数据,不再承担数据整合、数据共性加工职责;充分发挥Gauss DB数据处理和计算的能力,提升运算速度。加工后的数据通过数据交换推送至数据服务平台进行应用,如图2所示。
通过对华为FI升级及Gauss DB的融合运用,数据仓库平台功能、算力、稳定性得到大幅增强。一是夯实了数据仓库作为数据底座的基础能力,建立了覆盖数据全链路“采、存、算、管、治、用”的一体化运营平台,聚焦数据资产价值最大化。二是FI数据平台各组件得到大幅升级,存储及算力得到提高,运算能力和稳定性不断提升。三是充分融合Gauss DB的大规模并行计算能力,在结构化数据计算、复杂关联运算、快速查询响应方面得到增强。四是重构后的数据仓库模型,屏蔽了因前端业务系统结构变更而带来的下游系统接口调整。
随着云计算、物联网的发展,实时性的数据分析应用日益增加,实时数据处理能力将成为企业提升竞争力的重要因素。同时,云数据仓库可通过计算存储和网络资源池化管理,按需弹性部署,因此,云分布式架构以其灵活和高可用等优势,将成为下一代数据仓库的首选。未来,主要在两方面进行完善。一是对现有平台按云原生的方式进行部署,使其实现一键式集群申请、半小时级发放,存算分离,动态扩展。二是加强数据湖能力建设,构建统一数据目录、统一元数据管理、统一安全管理。