银⾏数据仓库体系实践(2)--系统架构
UML对系统架构的定义是:系统的组织结构,包括系统分解的组成部分,它们的关联性,交互,机制和指导原则,例如对系统就是定义各⼦系统的功能和职责,如贷款系统可能分为进件申请、核额、交易账务、贷后管理、管理台等⼦系统,对于系统就是定义各模块的功能和层次,例如管理台包括权限管理、⽤户管理、交易管理、逾期管理、统计分析等功能。
技术架构是指从技术实现层⾯描述系统,主要是根据系统架构组成部分确定每层使⽤什么技术框架,例如中间件、WebService等。
那对于数据仓库系统具体可以分为哪些部分以及他们的具体实现技术如何呢?以下是银⾏数据仓库的系统功能图:
图2.1
1、数据源:主要是指⾏内交易系统、外部采购或合作的第三⽅数据等3类、包括结构化数据以及⾮结构化的数据,结构化数据主要是存储在各个⾏内系统数据库中的表数据,⾮结构化数据包括图⽚、语⾳、⽂档等类型的数据。
2、数据采集:即如何将数据从数据源获取到数据仓库中,就是我们常说的ETL随着数据仓库功能的发展这部分不仅仅包括批量数据获取还包括实时数据流以及数据库数据实时采集:
(1)    批量采集:主要包括从数据源获取⼤批量的数据,这是银⾏数据仓库主要的数据采集⽅式,批量采集的采集数据频率较低,⼀般是每⽇凌晨获取上⼀天的数据,有些场景也可以每⼩时采集⼀次,由于采集的数据量⼀般较⼤,对数据源也有IO的影响,因此不建议采集频率太⾼。批量采集需要⽀持从关系型数据库、内存数据库、⽂件中批量获取并加载到数据仓库中。
在技术实现中,批量采集⼯具需要能⽀持多种数据源的采集和加载,批量采集可选择的⼯具较多,可以采⽤商业化软件如IBM的DATASTAGE以及INFORMATICA公司的INFORMATICA,也可以采⽤开源的SQOOP和KETTLE。也可以采⽤各关系型数据库以及HADOOP⾃带的⽂件导出和导⼊功能。
(2)    实时采集:指实时同步源系统的数据库数据到数据仓库,这样可以在数据仓库中实时分析数据。
实时采集通过专门的⼯具监控源系统数据库⽇志进⾏数据同步,数据源系统⽆需改造,这种采集⽅式针对数据统计时效性⾮常⾼的场景。
在技术实现中,实时采集⼯具需要⽀持从多种类型数据源到多种类型⽬标数据库的实时同步,这块商业化软件⽐较成熟,如ORACLE的GOLDENGATE、IBM的InfoSphere Change Data Capture等软件。开源软件中kettle也⽀持数据库实时同步,但需要在源表增加时间戳字段。
(3)    数据流采集:即通过Queue的⽅式从数据源系统获得数据流消息,数据仓库实时获取Queue中的消息进⾏实时数据流计算。这种数据采集⽅式也是⾯向统计时效⾮常⾼的场景,需要数据源系统增加实时发送消息的功能。
在技术实现中,由于数据流计算在互联⽹公司使⽤⼴泛,涌现出许多优秀的开源软件,如开源的KAFKA、ROCKETQUEUE等QUEUE⼯具,可以⽀持实时监控⽂件、数据库的变化并将变化数据发送到QUEUE中的开源软件FLUME。对于MYSQL也可以通过BINLOG和SHYIKO监控MYSQL⽇志,将数据变化发送到QUEUE中,那在商业化软件中IBM的MQ是各银⾏经常使⽤的中间件。
3、数据存储/计算:数据存储计算是数据仓库的主要功能。数据存储主要指结构化数据和⾮结构化数据的按格式存储,计算指基于存储的数据进⾏关联、汇总、数值计算等批量处理、实时流计算和复杂的机器学习。
实时流计算主要指对⼤规模流动数据在不断变化的过程中实时地进⾏分析,⽐如实时展⽰⽬前银⾏所有转账的笔数和汇总⾦额。需要将每笔转账进⾏不断计算。⽬前在银⾏中应⽤场景还较少,但随着互联⽹渠道的发展后续也将出现更多的应⽤场景。
机器学习是专门研究计算机怎样模拟或实现⼈类的学习⾏为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善,简单来说就是通过数据来发现规律,累积经验,并对新的数据进⾏分类或预测。⽐如通过学习近1年的上证指数及交易量的变化来预测明天的上证指数。⽬前炒的⼈⼯智能、深度学习也是属于机器学习范围。⽬前银⾏在风控、反欺诈、精准营销等⽅⾯也逐步在使⽤多种机器学习算法来提⾼成功率。
由于数据仓库是银⾏的数据枢纽,银⾏的所有业务数据都会在数据仓库保留,因此数据量较⼤,⼀般⼩银⾏数据量在TB级,股份制银⾏⼤概在PB级,国有⼤银⾏在ZB级。因此存储和计算的的可扩展性、性能都很重要。那在⽬前银⾏中数据仓库的存储和计算⼀般采⽤MPP 数据库(⼤规模并⾏数据库)和HADOOP相结合的技术⽅案。
(1)    MPP数据库:主要是⾯向结构化数据存储、批量计算和机器学习。在HADOOP出现前,商⽤的MPP数据库是数据仓库的主流技术平台,它使⽤简单,同时具有超⼤规模计算能⼒和良好的计算性能、扩展性。如TERADATA公司的TERADATA数据库、ORACLE 公司的ORACLE⼀体机、IBM的NET
EZZA⼀体机。其中TERADATA公司的TERADATA数据库在早期是⼀枝独秀,我国国有⼤银⾏的数据仓库最早建⽴时⼤部分都采⽤了TERADATA数据库。近年来ORACLE的EXADATA市场占有率也逐步提升,开源的MPP数据库最有名的是由商业转为开源GREENPLUM,⽬前腾讯云的TIBASE、阿⾥云的HybridDB for PostgreSQL都是基于GREENPLUM优化的。
(2)    HADOOP平台:HADOOP平台⽀持结构化数据和⾮结构化数据的存储和计算。由于MPP数据库价格⾼,且扩展性也有⼀定局限。很难满⾜互联⽹公司超⼤数据量及⾮结构化数据的计算需求,因此HADOOP软件⽣态体系应运⽽⽣并发展越来越成熟,成为互联⽹公司⼤数据处理的标配平台。2015年左右,随着HADOOP平台的完善及商⽤(商⽤版本如华为、星环科技;开源版本如CLOUDERA、Hortonworks),银⾏也逐步使⽤HADOOP平台和MPP数据⼀起作为数据仓库的存储和计算平台。其中批量计算⼀般使⽤HIVE和SPARK,流计算⼀般使⽤STORM和SPARKSTREAMING,机器学习可以采⽤HADOOP⽣态的SPARKMLLIB、MAHOUT,也可以使⽤TENSORFLOW、SAS、R等⽀持HADOOP平台专门的机器学习⼯具,⽬前许多公司在研发推出的⼈⼯智能平台(机器学习建模平台)也都把HADOOP平台作为数据存储和计算平台,如第四范式、星环科技等。
常见mpp数据库
图2.2
4、数据服务:数据服务主要指如何为银⾏其它系统提供数据服务,随着数据仓库体系的发展,数据仓库不仅仅能按批量的⽅式提供数据计算结果,还可以实时提供数据服务。
(1)    批量接⼝:按约定的接⼝⽅式将数据批量提供给数据应⽤系统,⼀般每天1次,可以按⽂件的⽅式放到约定的服务器,也可以通过数据采集部分提到的ETL⼯具直接将数据同步到应⽤系统的数据库中。
(2)    在线查询:提供实时查询的接⼝,并发布到银⾏交易总线,由其他业务系统或数据系统实时调⽤,⽐如银⾏的每年的账单总结(类似⽀付宝每年账单)⼀般由数据仓库根据每个客户1年的交易流⽔,统计出转账、消费、收⼊等数据并提供给渠道系统如⼿机银⾏、⽹上银⾏进⾏展⽰。那在技术实现⽅⾯,接⼝服务开发⼀般按各⾏的开发规范来实现,如web service或http+xml,⼤部分银⾏使⽤JAVA 进⾏开发,如果接⼝TPS不⾼,⼀般的MPP数据库也⾜够⽀持,⽆需进⾏数据移动,如果TPS⽐较⾼,可以将数据加⼯结果放到HADOOP HBASE进⾏数据存储和查询。
(3)    实时同步:实时同步主要是实时数据流计算后将结果实时同步给数据使⽤系统,同时将结果发布到QUEUE中,由⽬标系统进⾏订阅,实时获取。
图2.3
5、数据应⽤:数据应⽤主要是将数据通过数据服务提供给各应⽤系统,由各系统进⾏数据分析和成果展⽰。那主要有以下⼏类:
(1)    数据应⽤系统:主要指使⽤数据的系统,在银⾏包括客户关系管理、管理会计、绩效管理、新资本协议系统等数据系统,也包括核⼼、贷款等交易系统。
(2)    报表平台:报表平台能将数据快速展⽰成图表、能通过建⽴数据⽴⽅体(CUBE)提供数据钻取(向上或向下变换数据分析维度)功能,⽅便业务⼈员快速查询和分析数据。那报表⼯具⽬前商⽤的⽐较成熟,展⽰也更美观,常见的有COGNOS、润乾报表、TABLEAU等,开源的报表⼯具功能较弱,常⽤的有birt、ireport、jasperreport、KYLIN(基于hadoop建⽴CUBE)等。
(3)    分析探索:有的银⾏也叫数据实验室或分析集市,主要指提供给业务⼈员⾃⾏分析的平台,银⾏业务部门的分析⼈员经常使⽤SQL⾃⾏分析数据,也会使⽤SAS或R、PYTHON进⾏数据挖掘,随着AI技术的深⼊,也逐步在尝试TENSORFLOW等深度学习的⼯具来分析银⾏数据。由于数据分析⼯作时间不固定,且消耗计算资源较⼤,因此⼀般都是单独给业务⼈员搭建⼀套或多套的分析环境,每套环境包括HADOOP或数据库作为数据存储,SAS、R、TENSORFLOW等作为分析引擎。同时还需要定期(⼀般T+1)更新分析环境的数据,提⾼数据分析的及时性。
6、调度平台:调度平台主要进⾏各数据采集、加载、计算作业的任务编排和⾃动运⾏,⽐如并⾏调度作业A、B、C,都结束后调度作业D;调度平台需要⽀持多操作系统、可运⾏多种类型脚本或程序,并具有良好的扩展性和可⽤性,调度平台不仅仅调度数据仓库的加⼯作业,也需要调度各数据类系统的数据处理任务。使各系统作业能⽆缝衔接,将数据从源系统到数据仓库、到数据应⽤系统和数据结果应⽤全流程串联起来。⼀般的银⾏的调度平台每天调度的作业上万个,⼀些⼤⾏每天调度任务数⼗万个,因此⼀个稳定、⾼效、易操作的调度系统不可缺少。⽬前调度⼯具⽐较多,商业化的有IBM CONTROL-M、先进数通的MOIA等,开源的如azkaban、OOZIE等,由于调度系统需要调度各系统并和⾏内的监控系统进⾏集成,因此实施时需要⼀定的客户化⼯作。
7、运维监控:主要对数据仓库体系中各系统进⾏技术监控以及调度作业监控,ETL⼯具、MPP数据库以及HADOOP体系软件都带有监控⼯具,但还是需要进⾏⼀些客户化⼯作和各银⾏⾃有监控体系相结
合,在统⼀界⾯进⾏监控、预警、按优先级进⾏⽣产问题处理。
8、数据管理:那数据仓库有那么多数据,我们怎么知道需要的数据在哪⾥?数据质量怎么样?某⼀个数据字段发⽣变化会有什么影响?那就需要对数据进⾏管理或者治理,数据管理就是对数据仓库中的元数据、数据定义、数据质量进⾏管理,确保数据的规范性、及时性、可追溯性,主要包括以下⼏个⽅⾯:
(1)    数据标准:数据标准是指制定和推⼴应⽤统⼀的数据分类分级、记录格式及转换等标准,简单说就是定义各数据表字段的格式及代码值,例如货币种类定义10位长度,其中USD表⽰美元、CNY表⽰⼈民币……那数据标准应该是银⾏整体的标准,适⽤于全⾏的所有系统,但由于各系统建设时已经各有定义,所有⼀般数据标准都在数据仓库进⾏标准化,将各源系统字段代码转换到数据标准定义的字段代码,即数据仓库的字段代码。那数据标准系统主要是定义了各字段的类型、长度、精度、代码值以及源系统字段代码值转换到数据标准代码值的映射关系。
(2)    元数据管理:元数据指描述数据的数据,⽐如数据表和数据字段的定义以及关系,那在元数据中除了查询数据仓库中各表和字段的定义外,最重要的还有两个功能:⾎缘分析和影响分析。⾎缘分析指字段X是由哪些源表字段按什么规则加⼯⽽成的,也就是说字段X的“祖宗”是谁;那影响分析指字段X变化了,⽐如增加了字段长度或字段含义发⽣了变化,那会影响到后续哪些字段,也就是字段X
的“⼦孙”是谁;那这两个功能在⽇常数据分析中使⽤较多,特别是影响分析,源系统已采集的表结构有变化就会需要分析影响并进⾏同步修改。
(3)    数据质量:数据质量是指数据的可⽤性、标准规范性、正确性的检查以及数据质量整改的管理流程。由于数据源系统因为⼈⼯录⼊标准不清晰、录⼊差错、系统异常等原因导致数据差错,例如企业类型字段应该填写⼤、中、⼩微3种类型,客户经理对认定的标准不清晰将中型企业填写为了⼤型企业。例如对公客户地址⼤部分字段都没有填写;那如何发现这些数据质量问题并通过⼀系列流程进⾏数据修改,提⾼数据准确性和可⽤性就是数据质量需要做的事情。因此数据质量不仅仅是⼀个系统、许多数据检验规则,还有⼀整套数据修改和管理的流程。
以下是平台各部分的技术参考实现,数据管理的系统、运维系统由于客户化程度较⾼就暂不提供参考:
图2.4
⽬前各种云平台已经也提供了数据仓库的技术服务,那从技术功能、性能、可扩展性上可以满⾜银⾏的需求,但由于银⾏的⽤户数据相当敏感和重要,数据安全⾮常重要。短时间看,银⾏数据仓库上共有云还不太现实,但在银⾏引⼊私有云及数据仓库技术组件是现阶段更可能实现的⽅式。
以上是银⾏数据仓库的整体架构,也可供其他各⾏业数据仓库架构设计参考,谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。