数据建模介绍数据仓库构造方法•从整个企业的业务环境入手,分析其中的概念,应该有什么样的数据,达成概念完整性,并不从它需要支持那些应用入手。•一个企业建立唯一的数据中心,就像一个数据的仓库,其中数据是经过整合、经过清洗、去掉脏数据的、标准的,能够提供统一的视图。自上而下BillInmon•按照实际的应用需求,加载需要的数据,不需要的数据不必要加载到数据仓库当中。•这种方式建设周期较短,客户能够很快看到结果,适合做项目类数据仓库。自下而上RalphKimbal•结合自上而下、自下而上两种构造数据仓库的方法,结合企业自身特点,分析业务环境构造数据仓库底层数据基础,再按照实际的应用需求构造数据仓库上层数据。混合法支付宝业务系统简介业务特点类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等)非纯电子商务;纯金融线上子系统多而杂截止到2011年6月共有各类线上子系统259个类型多样:对C、对B、对内、对金融机构系统间依赖程度参差不齐垂直依赖(业务与核心)跨层依赖(跨过交易到账务)支付宝业务系统四大平台资金平台客户平台支付平台交易平台五大域商户域用户域支撑域风控域无线域两条线会员线金融线支付宝数据仓库架构原则底层业务的数据驱动为导向同时结合业务需求驱动便于数据分析屏蔽底层复杂业务简单、完整、集成的将数据暴露给分析层底层业务变动与上层需求变动对模型冲击最小化业务系统变化影响削弱在基础数据层(资金订单改造)结合自上而下的建设方法削弱需求变动对模型的影响数据水平层次清晰化高内聚松耦合主题之内或各个完整意义的系统内数据的高内聚主题之间或各个完整意义的系统间数据的松耦合构建仓库基础数据层使得底层业务数据整合工作与上层应用开发工作相隔离,为仓库大规模开发奠定基础仓库层次更加清晰,对外暴露数据更加统一传统仓库架构方法需求驱动为主…支付宝交易主题现状数据仓库模型建设目标示意图仓库基础数据层建设的意义避免底层业务变动对上层需求影响过大屏蔽底层复杂的业务逻辑,尽可能简单、完整的在接口层呈现业务数据仓库数据更加丰富建设高内聚松耦合的数据组织,使得数据从业务角度可分割,有助于数据和团队的扩展。第三方支付企业支付宝数据仓库体系结构点击流数据(Clickstream)数据库数据(OLTP)文档数据(Documents)其它数据(Other)源数据明细数据(DWD)数据仓库ETL报表展示自定义查询数据分析数据应用数据挖掘元数据管理数据质量监控KPI账单应用日志产品应用高粒度汇总数据(DWS)其它……数据集市、宽表(DM)数据应用(ST)低粒度汇总加工数据(DWB)建立企业级概念数据模型(CDM)的基本架构相关方安排位置相关方关系相关方及安排间的关系相关方描述相关方类型业务概念框架提供了一套通用的结构,它描述了所有业务环境IBM业务概念间最初的关系提供了相关方合约位置分类产品/服务资源事件业务方向条件安排类型所有业务信息都是可以用九大概念的词汇来表示每一种信息概念都可用三个分层来详细说明:I.分类分层(是什么)II.描述分层(有什么)III.关系分层(做什么)九大数据概念变迁IBMFSDM九大数据概念支付宝九大数据概念当事人地理位置协议资源项事件产品分类条件业务方向介质介质帐户渠道主要变化:1.将产品中的介质以及分类中的帐户和渠道独立出来作为单独的数据概念2.条件和分类不作为单独的数据概念,分散在各个数据概念中。3.业务方向中的部分在事件数据概念中体现当事人地理位置协议资源项事件产品介质渠道帐户条件条件分类条件分类条件条件分类业务方向第三方支付企业支付宝数据模型设计基于OMG推出的数据仓库元数据管理的CWM模型(CommonWarehouseMetamodel)物理模型设计PDM设计方法参考IBM的FSDM金融行业的数据仓库通用模板参考NCRTeradata金融服务逻辑数据模型(FS-LDM),参考新巴塞尔资本协议(BaselIICapitalAccord)需提供三到五年的数据的规范综合上述规范和要求,同时结合支付宝实际的业务,推出数据仓库5层架构体系DW五层模型是按照EDW各个应用层次的需求进行分层细化而来的,每个层次满足不同的应用。分为以下5层:1.ODS数据准备层2.DWD数据明细层3.DW(B/S)数据汇总层4.DM数据集市层5.ST数据应用层DW五层模型架构介绍DW五层模型架构介绍ODS层ST层DM层DW层DWD层数据来源及建模方式服务领域数据准备区,数据来源是各业务系统的源数据,物理模型和业务系统模型一致。数据来自ODS层,是DW明细事实层,数据模型是ODS一致数据来自DWD层,是DW事实层,采用维度建模,星型架构,这一层可细分为dwb和dws数据来自DW层,采用维度建模,星型架构数据来自DW层,采用维度建模,星型架构为其它逻辑层提供数据,为统一数据视图子系统提供数据实时查询为EDW提供各主题业务明细数据为EDW提供各种统计汇总数据数据挖掘,自定义查询,应用集市前端报表展现,主题分析,KPI报表数据ETL过程描述通过支付宝分发中心平台,把业务数据抽取落地成文本文件,再装载到数据仓库ODS层,不做清洗转换根据ODS增量数据进行merge生成全量数据,不做清洗转换,保留原始全量数据从DWD层进行轻度清洗,转换,汇总聚合生成DW层数据,如字符合并,EMAIL,证件号,日期,手机号转换,合并;用代理键取代维度;按各个维度进行聚合汇总从DW层的数据进行粗粒度聚合汇总;按业务需求对事实进行拉宽形成宽表从DW层的数据进行粗粒度聚合汇总;如按年、月、季、天对一些维度进行聚合生成业务需要的事实数据DW模型架构第一层介绍-ODS层功能ODS层是数据仓库准备区为DWD层提供基础原始数据减少对业务系统影响建模方式及原则数据保留时间根据实现业务需求而定可以分表进行周期存储,存储周期不长数据不做清洗转换和业务系统一样按主题逻辑划分数据模型和粒度和业务系统数据模型保留一致(3NF)从业务系统以增量方式抽取加载到ODSDW模型架构第二层介绍-DWD层功能为DW层提供来源明细数据提供业务系统细节数据的长期沉淀为未来分析类需求的扩展提供历史数据支撑建模方式及原则数据模型与ODS层一致(3NF)不做清洗转换处理为支持数据重跑可额外增加数据业务日期字段可按天、月、年进行分表用增量ODS层数据和前一天DWD相关表进行merge处理DW模型架构第三层介绍-DW层功能为DM,ST层提供细粒度数据,细化成DWB和DWSDWB是根据DWD明细数据进行清洗转换,如维度转代理键、身份证清洗、会员注册来源清洗、字段合并、空值处理、脏数据处理、IP清洗转换、账户余额清洗、资金来源清洗等DWS是根据DWB层数据按各个维度ID进行粗粒度汇总聚合,如按交易来源,交易类型进行汇总建模方式及原则聚合、汇总增加派生事实关联其它主题的事实表,DW层可能会跨主题域DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据数据模型可能采用反范式设计,合并信息等DW模型架构第三层介绍-DW层DW模型架构第四层介绍-DM层功能这一层可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储满足一些特定查询、数据挖掘应用应用集市数据存储建模方式及原则尽量减少数据访问时计算,优化检索维度建模,星形模型事实拉宽,度量预先计算分表存储DW模型架构第四层介绍-DM层DW模型架构第五层介绍-ST层功能ST层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户适合作OLAP、报表模型,如ROLAP,MOLAP根据DW层经过聚合汇总统计后的粗粒度事实表建模方式及原则保持数据量小维度建模,星形模型各种维度代理键+度量增加数据业务日期字段,支持数据重跑不分表存储DW模型架构第五层介绍-ST层细化DW建模对DW中各个主题业务建模进行了细分,每个层次具有不同的功能。保留了最细粒度数据满足了不同维度,不同事实的信息满足数据重新生成不同层次的数据支持数据重新生成无需备份恢复解决了由不同故障带来的数据质量问题消除了重新初始化数据的烦恼减少应用对DW的压力以业务应用驱动为向导建模,通过ST、DM层提供数据避免直接操作基础事实表降低数据获取时间快速适应需求变更适应维度变化明细基础数据层稳定,适应前端应用层业务需求变更所有前端应用层模型之间不存在依赖,需求变更对DW整个模型影响范围小能适应短周期内上线下线需求DW五层模型架构特点数据仓库建设规范表命名规范程序命名规范开发模板通用SQL文档数据仓库建设规范表命名规范表名命名格式说明[层次]_[主题][_表内容]_[分表规则]T表命名格式说明T_[层次]_[主题][_表内容]临时表名命名格式说明[tmp]_所属程序名_[自定义序号1..10][temp]_[操作者缩写]_YYYYMMDD_[表内容]视图命名格式说明V_[表名]DWB层视图仍以DWB_开头,为了兼容日后业务变动数据仓库建设规范表命名解释层次ODS,DWD,DWB,DWS,DM,ST如ODS_TRD_TRADE_BASE_YYYYMMDD,DWD_TRD_TRADE_BASE_YYYYMMDD;表内容表名视图名总长度不超过64个字符ODS层和DWD层:[层次]_[主题]_[业务系统表名字]_[分表规则]DWB(含)以上层次表名字:[层次]_[主题]_[有意义的缩写]_[分表规则]尽量详尽说明表的具体内容分表规则日表YYYYMMDD月表YYYYMM日汇总DS,月汇总MS,日累计DT,月累计MT数据仓库建设规范程序命名规范程序命名[目标表名(去除分表规则部分)]_[程序类型].tcl程序名称一律小写解释目标表名(去除分表规则部分)目标表名为程序生成数据的表名,如数据ODS_TRD_TRADE_BASE_YYYYMMDD-DWD_TRD_TRADE_BASE_YYYYMMDD,那么程序命名成dwd_trd_trade_base_dd.tcl