数据仓库入门认识

笔记整理来源于如下链接,建议深入阅读:

https://my.oschina.net/leejun2005/blog/188770

http://blog.csdn.net/trigl/article/details/68944434

http://www.cnblogs.com/muchen/p/5305658.html

http://www.cnblogs.com/muchen/p/5310732.html

http://www.cnblogs.com/muchen/p/5318808.html

一、数据仓库定义

    1. 定义:数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。

    2. 特点:

       1)面向主题:数据仓库都是基于某个明确主题,仅需要与该主题相关的数据,其他的无关细节数据将被排除掉 

       2)集成的:从不同的数据源采集数据到同一个数据源,此过程会有一些ETL( Extract-Transform-Load,抽取-交互转换-加载)操作 

       3)随时间变化:关键数据隐式或显式的基于时间变化 

       4)信息本身相对稳定:数据装入以后一般只进行查询操作,没有传统数据库的增删改操作

    3. 核心组件

       1) 各源数据库

       2) ETL

       3) 数据仓库

       4) 前端应用

二、数据仓库基本概念

   1. 主题(Subject)

      主题就是指我们所要分析的具体方面。例如:某年某月某地区某机型某款App的安装情况。主题有两个元素:一是各个分析角度(维度),如时间位置;二是要分析的具体量度,该量度一般通过数值体现,如App安装量。

   2. 维(Dimension)

      维是用于从不同角度描述事物特征的,一般维都会有多层(Level:级别),每个Level都会包含一些共有的或特有的属性(Attribute)

   3. 分层(Hierarchy)

      OLAP需要基于有层级的自上而下的钻取,或者自下而上地聚合。所以每一个维必须有Hierarchy,至少有一个默认的,当然可以有多个

      有了Hierarchy,维里面的Level就有了自上而下的树形结构关系, 也就是上层的每一个成员(Member)都会包含下层的0个或多个成员,也就是树的分支节点

   4. 量度

      量度就是我们要分析的具体的技术指标,诸如年销售额之类。它们一般为数值型数据。我们或者将该数据汇总,或者将该数据取次数、独立次数或取最大最小值等,这样的数据称为量度。

   5. 粒度 

      数据的细分层度,例如按天分按小时分。

   6. 事实表

      

      实表是用来记录具体事件的,也就是你要关注的内容,包含了每个事件的具体要素,以及具体发生的事情。事实表中以数字型为主,包含了度量信息。比如用户交易流水表。

   7. 维度表

      

      维表则是对事实表中事件的要素的描述信息,就是你观察该事务的角度,是从哪个角度去观察这个内容的。维度表常以文本类型为主,常常被作为事实表的“上下文”。一般用来解释事实表中关键字纬度的具体内容,为那些度量数值添加了业务意义。比如用户属性表。

     

三、数据模型

   

   1. 数据模型与数据建模

      1) 模型是对现实世界的抽象,设计数据库系统时,一般会事先用抽象的图表(ER图)反映数据彼此之间的关系,称为建立数据模型。

      2) 数据模型是数据库管理系统用来表示实体与实体间联系的方法。在设计数据库时,对业务进行分析、抽象、并从中找出内在联系,进而确定数据库的结构,这一过程就称为数据建模。

      3) 数据模型与数据建模的过程就是用标准来定义、规范数据。

      4) 数据仓库是企业惟一、真实、可靠的综合数据平台。数据仓库的设计建模一般都依照三范式、星型模型、雪花模型,无论哪种设计思想,都应该最大化地涵盖关键业务数据,

         把运营环境中杂乱无序的数据结构统一成为合理的、关联的、分析型的新结构,而ETL则会依照模型的定义去提取数据源,进行转换、清洗,并最终加载到目标数据仓库中。

      5) 模型的重要之处在于对数据做标准化定义,实现统一的编码、统一的分类和组织。标准化定义的内容包括:标准代码统一、业务术语统一。

         ETL依照模型进行初始加载、增量加载、缓慢增长维、慢速变化维、事实表加载等数据集成,并根据业务需求制定相应的加载策略、刷新策略、汇总策略、维护策略。

   2. 星形模型

      1) 星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余

      2) 维度表只和事实表关联,维度表之间没有关联

      3) 每个维度表的主键为单列,且该主键放置在事实表中,作为两边连接的外键

      4) 以事实表为核心,维度表围绕核心呈星形分布

   3. 雪花模型

      1) 雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量

      2) 雪花模式(Snowflake Schema)是对星形模式的扩展,每个维表可继续向外连接多个子维表

      3) 雪花模型相当于将星形模式的大维表拆分成小维表,满足了规范化设计

   4. 星座模型

      1) 共享维度

      2) 细节/聚集事实表, 细节事实表(detailed fact tables)中每条记录表示单一事实,而聚集事实表(aggregated fact tables)中每条记录则聚合了多条事实。

   5. 数据集市 

   

      1) 数据集市可以理解为是一种”小型数据仓库”,它只包含单个主题,且关注范围也非全局。

      2) 独立数据集市(independent data mart),这类数据集市有自己的源数据库和ETL架构

      3) 非独立数据集市(dependent data mart),这种数据集市没有自己的源系统,它的数据来自数据仓库

四、数据仓库开发流程

   1. 数据仓库需求

   2. 数据仓库建模

   3. 数据仓库实现(ETL工程、前端开发)

   4. 数据仓库部署

   5. 数据仓库使用

   6. 数据仓库管理、维护

五、维度建模思路

   1. 哪些维度对主题分析有用?

   2. 如何使用现有数据生成维表?

   3. 用什么指标来”度量”主题?

   4. 如何使用现有数据生成事实表?

六、数据仓库建模体系

   1. 规范化数据仓库

      

      规范化设计的分析型数据库,然后基于这个数据库为各部门建立数据集市;

      该建模体系首先对ETL得到的数据进行ER建模,关系建模,得到一个规范化的数据库模式。然后用这个中心数据库为公司各部门建立基于维度建模的数据集市。各部门开发人员大都从这些数据集市提数,通常来说不允许直接访问中心数据库

   2. 维度建模数据仓库

      设计一组常用的度集合(conformed dimension),然后创建一个大星座模型表示所有分析型数据。如果这种一致维度不满足某些数据分析要求,自然也可在数据仓库之上继续构建新的数据集市      

   3. 独立数据集市

      

      独立数据集市的建模体系是让公司的各个组织自己创建并完成ETL,自己维护自己的数据集市

七、ETL

    1. ETL工作的实质就是从各个数据源提取数据,对数据进行转换,并最终加载填充数据到数据仓库维度建模后的表中。

    2. 抽取(Extract): 根据数据仓库主题、主题域确定需要从应用数据库中提取的数

    3. 转换(Transform): 对提取好了的数据的结构进行转换,以满足目标数据仓库模型的过程。此外,转换过程也负责数据质量工作,这部分也被称为数据清洗(data cleaning)

    4. 加载(Load): 将已经提取好了,转换后保证了数据质量的数据加载到目标数据仓库

    5. 开源ETL工具:kettle

八、OLAP/OLTP

    1. OLAP(On-Line Analytical Processing) 联机分析处理

       1) OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果

       2) OLAP工具,它专用于维度建模数据的分析。而BI工具则是能够将OLAP的结果以图表的方式展现出来,它和OLAP通常出现在一起。

       3) mdx(Multidimensional expression): 多维表达式

    2. OLTP(on-line transaction processing)

       1) OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理

九、数据立方体(Data Cube)

    1. cube 

       立方其实就是多维模型中间的事实表(Fact Table),它会引用所有相关维的维主键作为自身的联合主键,加上度量(Measure)和计算度量(Calculated Measure)就组成了立方的结构

    2. 切片和切块(Slice and Dice)

       在数据立方体的某一维度上选定一个维成员的操作叫切片,而对两个或多个维执行选择则叫做切块

    3. 旋转(Pivot)

       

       旋转就是指改变报表或页面的展示方向。对于使用者来说,就是个视图操作,而从SQL模拟语句的角度来说,就是改变SELECT后面字段的顺序而已

    4. 上卷和下钻(Rol-up and Drill-down)

       上卷可以理解为”无视”某些维度;下钻则是指将某些维度进行细分

十、OLAP的架构模式

    1. MOLAP(Multidimensional Online Analytical Processing)

       MOLAP架构会生成一个新的多维数据集,也可以说是构建了一个实际数据立方体

    2. ROLAP(Relational Online Analytical Processing)

       ROLAP架构并不会生成实际的多维数据集,而是使用星形模式以及多个关系表对数据立方体进行模拟

    3. HOLAP(Hybrid Online Analytical Processing)

       这种架构综合参考MOLAP和ROLAP而采用一种混合解决方案,将某些需要特别提速的查询放到MOLAP引擎,其他查询则调用ROLAP引擎。

       

Published by Kitho Ling

一个热爱自由,放荡不羁的Java软件工程师