简介数据仓库诞生原因历史数据积存企业数据分析需要----------------------------------------------------1.数据仓库比尔 恩门 提出;1.1 数仓特点面向主题的、集成的、非集成的面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程。非易失:保存的数据是一系列历史快餐,不允许被修改;时变性:数仓会定期接受、集成新的数据,以反应出数据的最新变化。1.2 数据仓库 VS 数据库数据库 : 面向事务、OLTP、ER模型数据仓库:面向主题,OLAP、 星型模型、雪花模型1.3 传统数据仓库MPP 大规模并行处理、集群完全兼容SQL1.4 大数据数据仓库天然的扩展性 + 海量数据存储计算分布式SQL引擎 + 大数据计算引擎 + 分布式文件系统Yarn 调度引擎1.51.6 分布式架构Hadoop 架构 批处理架构P 分区容错性A 可用性C 一致性吞吐量大时,优势明显。1.7 常见数据仓库产品1.7.1 传统数据仓库Oracle RACDB2TeradataGreenplum 开源,基于 postgreSQL 开发;1.7.2 大数据数据仓库Hive sql 转换 MapReduce ,或转换 sparkSpark SQL 速度更快,Hbase No SQL 数据库,非结构化数据、半结构化数据ImpalaHAWQ greenplum 在hadoop 上的移植产品TIDB 兼容mysql 、同时可用于 OLTP、OLAP----------------------------------------------------2.架构2.1 架构图-数据仓库架构设计ETL 数据同步模块 sqoop kettleODS 操作数据源层 原始数据 Operational Data StoreCDM 公共维度模型层 Common data modelDWD 数据明细层 Data Warehouse detailsDWS 数据汇总层 Data Warehouse ServicesADS 数据应用层报表决策、并发查询、搜索检索Application Data Store2.2 ETL流程ETL extract transform load 提取-转换-执行数据抽取全量同步增量同步数据转换清洗转换数据加载结构化数据ETL工具Sqoop 1.X版本建议KettleDatastage 商业软件Informatica 商业软件kafaka 消息队列、提供etl功能非|半结构化数据ETL工具FlumeLogstash2.3 数据积存操作数据层 ODS与原始数据保持一致,可以增加字段用来进行数据管理;2.4 数据分析DWD 数据明细层对ODS层数据进行清洗、标准化】维度退化(时间、分类、地域)DWS 数据汇总层按照主题汇总ADS 数据应用层又称数据集市Kylin 报表决策Hbase 并发查询Elastic Search 搜索检索----------------------------------------------------3.建模方法3.1 基本概念OLAP 在线联机分析Online analysis process在线事务处理,主要操作是随机读写为保证一致性,减少冗余,常使用关系模型在关系模型中,使用3NF三范式规则来减少冗余ROLAP 关系型OLAP relation OLAPMOLAP 多维型 MOLAP Multidimensional OLAPGroup by 运算,提前计算预先聚合运算,使用多维数组的形式保存数据结果,加快查询分析时间。HOLAP 混合架构的OLAP Hybrid OLAPROLAP 和 MOLAP 两者的集成,如底层是关系型的,高层是多维矩阵型的;查询效率高于ROLAP,低于MOLAP3.2 ROLAP维度模型ER模型、维度模型、Data Value 、Anchor面向数据仓库的 DWS层(原始数据层)维度模型表:维度表、事实表维度:分类、时间、地域维度模型:星型模型(一个中心 事实表)、雪花模型、星座模型:星座模型基于多个事实表,事实表之间会共享一些维度表是大型数据仓库中的常态,是业务增长的结果,与模型设计无关。维度模型建立后,方便对数据进行多维分析。宽表模型宽表模型是维度模型的衍生,适合join性能不佳的数据仓库产品。宽表模型将维度冗余到事实表中,形成宽表,以减少join操作。3.3 MOLAP 系统建模方法对数据进行预运算以多维数组 cube(多维立方体)模型存储,物化到存储系统中,加快后续查询。生成CUBE 需要大量的时间、空间,维度预处理可能会导致数据膨胀。常见mOLAP 产品Kylin ,MOLAP产品的开源代表应用于数据仓库ADS (应用数据层)Druid3.4 多维分析复杂查询:count 、sum、avg钻取:对维度的不同层次分析,通过改变维度的层次来变换分析的粒度。上卷(roll-up):从低层次到上层次下钻(drill-down):从高层次到低层次切片:选择某个维度进行分割称为切片。切块:按照多维进行的切片称为切块。旋转:对维度方向的互换,类似于较差坐标轴上卷。----------------------------------------------------4. 最佳实践表的分类(维度建模中的表类型)事实表:一个现实存在的业务对象。维度表:对一些业务状态、代码的解释,也可以称为码表。事务事实表:一旦产生不会改变,只会增加、追增。周期快照事实表:周期重新计算使用周期+ 状态度量的组合:如累计订单数,年是周期,订单总数是量度。写入压力小,查询压力大。累积快照事实表:记录不确定周期的度量统计,完全覆盖一个事实的生命周期,如订单状态表。通常有多个时间字段,用于记录生命周期中的关键时间点。只有一条记录,针对此记录不断更新。累计快照事实表具体实现实现方式1:日期分区表全量数据记录,每天的分区存储昨天全量数据 与 当天增量数据合并的结果。数据量大导致全量表膨胀,存储大量永远不更新的冷数据,对性能影响较大。适用于数据量少的情况实现方式2:日期分区表 + 冷数据清理使用日期分区表,推测数据最长生命周期,存储周期内数据;周期外的冷数据存储到归档表需要保留多天的分区数据,存储消耗依然很大。实现方式3:日期分区表+业务实体的结束时间分区每天的分区存放当天结束的数据,设计一个时间非常大的分区,存放截止当前未结束的数据。以结束的数据存放到相应分区,存放未结束数据的分区,数据量也不会很大。无存储浪费,数据全局唯一业务系统可能无法标识业务实体的结束时间,可以使用其他相关业务系统的结束标志作为此业务系统的结束,也可以使用最长生命周期时间或前端系统的数据归档时间。拉链表,不属于数据建模表类型。拉链表记录每天信息的生命周期,用于保留数据的所有历史(变更状态)拉链表将表数据的随机修改方式,变为顺序追加。ETL策略全量同步数据初始化转载一定使用全量同步的方式;增量同步传统数据整合方案: merge方式(update + insert)任务调度为什么需要任务调度解决任务单元间的依赖关系自动化完成任务的定时执行常见任务类型ShellJava 程序mapreduce程序sql脚本常见调度工具AzkabanOozie
文章转载自flychen的碎语,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




