数据仓库架构以及多维数据模型的设计.docx
《数据仓库架构以及多维数据模型的设计.docx》由会员分享,可在线阅读,更多相关《数据仓库架构以及多维数据模型的设计.docx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据仓库架构以及多维数据模型的设计|云祁封图|CSDN下载于视觉中国一、前言最近看了?Hadoop构建数据仓库理论?这本书收获很多把一些关于数仓理论的心得整理出来方便大众共同学习。注本文内容由摘自?Hadoop构建数据仓库理论?与其他相关参考资料旨在方便大众参考学习如您觉得进犯了您的权益请联络我们删除谢谢二、数据仓库的定义数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合用于对管理决策经过的支持。数据仓库本身并不“消费任何数据同时自身也不需要“消费任何的数据数据来源于外部并且开放给外部应用使用。三、数据仓库的特点面向主题的数据仓库都是基于某个明确的主题仅需要与该主题相
2、关的数据其他的无关细节将会被去掉。集成的数据仓库里面的数据都是经过ETLExtract-Transform-Load抽取-转换-加载操作后被集中放到同一个数据源数据仓库里的数据是来自于各种不同的数据源。随时间变化的关键数据隐式或显示地随时间变化而变化。数据相对稳定的数据装入后一般只是进展查询操作没有传统数据库的增删改操作。总结数据仓库就是整合多个数据源的历史数据进展细粒度的、多维的分析可以有效地帮助高层管理者或业务分析人员做出商业战略决策或者商业报表。四、数据仓库的作用可以整合公司的所有业务建立统一的数据中心。分析用户行为数据通过数据挖掘来降低投入本钱进步投入效果。可以作为各个业务的数据源形成
3、业务数据相互反应的良性循环。可以提供数据报表用于公司的决策等等。数据处理大致可以分成两大类联机事务处理OLTPon-linetransactionprocessing、联机分析处理OLAPOn-LineAnalyticalProcessing。OLTP是传统的关系型数据库的主要应用主要是根本的、日常的事务处理例如银行交易。OLAP是数据仓库系统的主要应用支持复杂的分析操作侧重决策支持并且提供直观易懂的查询结果。OLTP系统强调数据库内存效率强调内存各种指标的命令率强调绑定变量强调并发操作。OLAP系统那么强调数据分析强调SQL执行市场强调磁盘I/O强调分区等。五、数据仓库的架构数据收集与分析数
4、据收集层的任务就是把数据从各种数据源中收集以及存储到数据库上期间有可能会做一些ETL抽取extra转化transfer装载load操作。数据源种类可以有多种日志所占份额最大存储在备份效劳器上业务数据库如Mysql、Oracle来自HTTP/FTP的数据合作伙伴提供的接口其他数据源如Excel等需要手工录入的数据数据存储与分析HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。离线数据分析与计算也就是对实时性要求不高的局部Hive是不错的选择。使用Hadoop框架自然而然也提供了MapReduce接口假如真的很乐意开发Java或对SQL不熟那么可以以使用MapReduce来做分析与
5、计算。Spark性能比MapReduce好很多同时使用SparkSQL操作Hive。数据分享前面使用Hive、MR、Spark、SparkSQL分析以及计算的结果还是在HDFS上但大多业务以及应用不可能直接从HDFS上获取数据那么就需要一个数据分享的地方使得各业务以及产品能方便的获取数据。这里的数据分享其实指的是前面数据分析与计算后的结果存放的地方其实就是关系型数据库以及NOSQL数据库。数据应用报表报表所使用的数据一般也是已经统计汇总好的存放于数据分享层。接口接口的数据都是直接查询数据分享层即可得到。即席查询即席查询通常是现有的报表以及数据分享层的数据并不能知足需求需要从数据存储层直接查询。
6、一般都是通过直接操作SQL得到。六、数据仓库的要求高效率数据仓库的分析数据一般分为日、周、月、季、年度等可以看出以日为周期的数据要求的效率最高要求24小时甚至12小时内客户能看到昨天的数据分析。由于有的企业每日的数据量很大假如数据仓库设计的不好需要延时一到两天才能显示数据这显然是不能出现这种事情的。数据质量高数据仓库所提供的各种信息肯定要准确的数据。数据仓库通常要经过数据清洗装载查询展现等多个流程而得到的假如复杂的架构会有更多层次那么由于数据源有脏数据或代码不严谨都可以导致数据不准确或有错误假如客户看到错误的信息就可能导致分析出错误的决策造成损失经济的损失。扩展性之所以有的大型数据仓库系统架构
7、设计复杂是因为考虑到了将来3-5年度的扩展性因为假如在将来需要扩展一些新的功能了就可以不用重建数据仓库系统就能很稳定运行。因为重建一个数据创库是比拟消耗人力以及财力。可扩展性主要表达在数据建模的合理性。为了到达上述的要求建立起一个高效率、高数据质量、良好的可扩展性再加上为了进步建仓的速度根据在实际消费环境中的经历的总结于是就提出来了数据仓库的分层概念。那么到底什么是数据仓库的分层为什么要分成?数据仓库的分层的好处是什么呢接下来将介绍关于数据仓库分层的一些概念。七、数据仓库分层分层是数据仓库解决方案中数据架构设计的一种数据逻辑构造通过分层理念建立的数据仓库它的可扩展性非常好这样设计出来的模型架构
8、可以任意地增减、交换数据仓库中的各个组成局部。用空间换时间通过大量的预处理来提升应用系统的用户体验效率因此数据仓库会存在大量冗余的数据。假如不分层的话假如源业务系统的业务规那么发生变化将会影响整个数据清洗经过工作量宏大。通过数据分层管理可以简化数据清洗的经过因为把原来一步的工作分到了多个步骤去完成相当于把一个复杂的工作拆成了多个简单的工作把一个大的黑盒变成了一个白盒每一层的处理逻辑都相对简单以及容易理解这样我们比拟容易保证每一个步骤的正确性当数据发生错误的时候往往我们只需要部分调整某个步骤即可。八、数据仓库四个层次的划分标准的数据仓库分层ODS临时存储层PDW数据仓库层MID数据集市层APP应
9、用层。ODS临时存储层它以及源系统数据是同构的而且这一层数据粒度是最细的这层的表分为两种一种是存储当前需要加载的数据一种是用于存储处理完后的数据。PDW数据仓库层它的数据是干净的数据是一致的准确的也就是清洗后的数据它的数据一般都遵循数据库第三范式数据粒度以及ODS的粒度一样它会保存bi系统中所有历史数据。MID数据集市层它是面向主题组织数据的通常是星状以及雪花状数据从数据粒度来讲它是轻度汇总级别的数据已经不存在明细的数据了从广度来讲它包含了所有业务数量。从分析角度讲大概就是近几年度。App应用层数据粒度高度汇总但不一定涵盖所有业务数据只是MID层数据的一个子集。8.1ODS层 “面向主题的数据
10、运营层是最接近数据源中数据的一层数据源中的数据经过抽取、洗净、传输也就讲传讲中的ETL之后装入本层。本层的数据总体上大多是按照源头业务系统的分类方式而分类的。例如这一层可能包含的数据表为人口表包含每个人的身份证号、姓名、住址等、机场登机记录包含乘机人身份证号、航班号、乘机日期、起飞城市等、银联的刷卡信息表包含银行卡号、刷卡地点、刷卡时间、刷卡金额等、银行账户表包含银行卡号、持卡人身份证号等等等一系列原始的业务数据。这里我们可以看到这一层面的数据还具有鲜明的业务数据库的特征甚至还具有一定的关系数据库中的数据范式的组织形式。但是这一层面的数据却不等同于原始数据。在源数据装入这一层时要进展诸如去噪例
11、如去掉明显偏离正常程度的银行刷卡信息、去重例如银行账户信息、公安局人口信息中均含有人的姓名但是只保存一份即可、提脏例如有的人的银行卡被盗刷在特别钟内同时有两笔分别在中国以及日本的刷卡信息这便是脏数据、业务提取、单位统一、砍字段例如用于支撑前端系统工作但是在数据挖掘中不需要的字段、业务判别等多项工作。8.2PDW层数据仓库的主体在这里从ODS层中获得的数据按照主题建立各种数据模型。例如以研究人的旅游消费为主题的数据集中便可以结合航空公司的登机出行信息和银联络统的刷卡记录进展结合分析产生数据集。在这里我们需要解析四个概念维dimension、事实Fact、指标Index以及粒度Granularit
12、y。PDM层数据集市从数据的时间跨度来讲通常是DW层的一局部按照业务划分如流量、订单、用户等生成字段比拟多的宽表用于提供后续的业务查询OLAP分析数据分发等。8.3APP层在这里主要是提供应数据产品以及数据分析使用的数据一般会存放在es、mysql等系统中供线上系统使用可以能会存在Hive或Druid中供数据分析以及数据挖掘使用。比方我们经常讲的报表数据或讲那种大宽表一般就放在这里。九、数据流向数据来源层ODS层这里其实就是我们如今大数据技术发挥作用的一个主要战场。我们的数据主要会有两个大的来源1、业务库这里经常会使用sqoop来抽取比方我们每天定时抽取一次。在实时方面可以考虑用canal监听
13、mysql的binlog实时接入即可。2、埋点日志线上系统会打入各种日志这些日志一般以文件的形式保存我们可以选择用flume定时抽取可以以用用sparkstreaming或storm来实时接入当然flumekafka是企业常用的组合。其它数据源会比拟多样性这以及详细的业务相关不再赘述。ODS层APP层这里面也主要分两种类型1、每日定时任务型比方我们典型的日计算任务每天凌晨算前一天的数据早上起来看报表。这种任务经常使用Hive、Spark或MR程序来计算最终结果写入Hive、Hbase、Mysql、Es或Redis中。2、实时数据这局部主要是各种实时的系统使用比方我们的实时推荐、实时用户画像一般
14、我们会用SparkStreaming、Storm或Flink来计算最后会落入Es、Hbase或Redis中。PDW层-APP层pdw分析完的数据一般借助sqoop传输到关系型数据库如mysqlapp层根据业务需要以可视化的形式展示给决策层BOSS。十、数据仓库模型设计根底10.1维度数据模型维度数据模型简称维度模型Dimensionalmodeling,DM是一套技术以及概念的集合用于数据仓库设计。不同于关系数据模型维度模型不一定要引入关系数据库。在逻辑上一样的维度模型可以被用于多种物理形式比方维度数据库或者是简单的平面文件。根据数据仓库大师Kimball的观点维度模型是一种趋向于支持最终用户
15、对数据仓库进展查询的设计技术是围绕性能以及易理解性构建的。尽管关系模型对于事务处理系统表现非常出色但它并不是面向最终用户的。事实以及维度是两个维度模型中的核心概念。事实表示对业务数据的度量而维度是观察数据的角度。事实通常是数字类型的可以进展聚合以及计算而维度通常是一组层次关系或者描绘信息用来定义事实。例如销售金额是一个事实而销售时间、销售的产品、购置的顾客、商店等都是销售事实的维度。维度模型按照业务流程领域即主题域建立例如进货、销售、库存、配送等。不同的主题域可能分享某些维度为了进步数据操作的性能以及数据一致性需要使用一致性维度例如几个主题域间分享维度的复制。术语“一致性维度源自Kimball
16、指的是具有一样属性以及内容的维度。10.2维度数据模型建模经过维度模型通常以一种被称为星型形式的方式构建。所谓星型形式就是以一个事实表为中心周围环绕着多个维度表。还有一种形式叫做雪花形式是对维度做进一步标准化后形成的。一般使用下面的经过构建维度模型选择业务流程声明粒度确认维度确认事实这种使用四步设计法建立维度模型的经过有助于保证维度模型以及数据仓库的可用性。1选择业务流程确认哪些业务处理流程是数据仓库应该覆盖的是维度方法的根底。因此建模的第一个步骤是描绘需要建模的业务流程。例如需要解析以及分析一个零售店的销售情况那么与该零售店销售相关的所有业务流程都是需要关注的。为了描绘业务流程可以简单地使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据仓库 架构 以及 多维 数据模型 设计
限制150内