数据仓库技术(Data Warehouse Technologien) 第三章节 多维数据模型(3)
32. 雪花模式 (Snowflake Schema)
- 分类映射:每个分类级别一张表(比如,商品,产品组,等)
- 维度表包含:
- 分类节点的ID
- 描述的属性(比如:市场,生产者,名称/标志)
- 直属的更高分类层次的外键
- 事实表包括(除了变量):
- 每个最低分类级别的外键
- 外键构成事实表的复合主键
33. 星形模式 (Star Schema)
- 雪花模式是范化的:避免更新异常 → 3.NF
- 但是,需要Join更多的表格
- 星形模式
- 对属于一个维度的表格非规范化 → 1.NF
- 对于一个维度刚好一个维度表
- 维度表中的冗余可以较快查询处理
- 比如:商品,产品,产品组等作为产品表的列
34. 星形模式 形式
- n维多维度模式
- 维度表的形式
- 带m个事实的事实表
- 事实表的组合主键的每个部分都是对应维度主键属性的外键
- Oracle中CREATE DIMENSION 语句
- 在SQL中外键约束是可表达的
- 但是:维度内的属性之间的函数关系无法详细说明
- Oracle拓展:CREATE DIMENSION
- 保证”信息性“
- DBS不会检测正确性
- 对物化视图使用查询重写
- 关键字
- LEVEL
- 定义分类级别
- HIERARCHZY
- 确定分类级别的依赖性
- ATTRIBUTE ... DETERMINTS
- 定义分类属性和维度属性之间的依赖性
- LEVEL
- CREATE DIMENSION示例
CREATE DIMENSION ProduktDimensionLEVEL Artikel IS (Produkt.P_ID)LEVEL Produktgruppe IS (Produkt.P_PGruppe_ID)LEVEL Produktkategorie IS(Produkt.P_Produktkategorie)
HIERARCHY ProduktHierarchie (Artikel CHILD OFProduktgruppe CHILD OFProduktkategorie)
ATTRIBUTE Artikel DETERMINES (P_Bezeichnung,P_Verkaufspreis, P_Einkaufspreis,P_Rabatt, P_Steuern)
ATTRIBUTE Produktgruppe DETERMINES(P_Produktgruppe)
35. Snowflake with CREATE DIMENSION
CREATE DIMENSION ProduktDimensionLEVEL Artikel IS (Produkt.P_ID)LEVEL Produktgruppe IS (Produktgruppe.PG_ID)
HIERARCHY ProduktHierarchie (Artikel CHILD OF Produktgruppe)
JOIN KEY (Produkt.P_PGruppe_ID)REFERENCES Produktgruppe
36. Star with CREATE DIMENSION
CREATE DIMENSION ZeitDimensionLEVEL Tag IS (Zeit.Z_Tag_ID)LEVEL Monat IS (Zeit.Z_Monat_ID)LEVEL Jahr IS (Zeit.Z_Jahr_ID)
HIERARCHY ZeitHierarchie (Tag CHILD OF Monat CHILD OF Jahr)
ATTRIBUTE Tag DETERMINES (Z_Tag)
ATTRIBUTE Monat DETERMINES (Z_Monat)
ATTRIBUTE Jahr DETERMINES (Z_Jahr)
37. 对比星形模式和雪花模式
- 数据仓库应用的特性
- 在查询更高粒度等级上典型的限制(Join操作)
- 相较于事实表,维度表少量的数据量
- 分类极少更改(更新异常的危险)
- 星形模式的优点
- 简单的结构(简化查询公式/语句)
- 分类层次结构的简单和灵活的表达(维度表的列)
- 一个维度内的有效的查询处理(没有Join操作的必要性)
38. 假设考虑成本
- n维(),每第K分类级别加上Top
- 每个分类节点有三个孩子
- 级别 个节点(Top)
- 级别 个节点
- 级别 个节点
- ...
- 级别 i = 0 :最高的粒度,个节点
- 每个维度的节点
- M个事实,在维度中均匀分布
- 属性:b Bytes: 节点只有ID: m 事实属性
39. 完整的分类层次结构
- 对于每个节点都有一样多的事实
40. 星形模式与雪花模式查询开销的对比
- 雪花模式的存储空间:
- n 事实表中外键的数量
- m 事实属性的数量
- 每个分类节点一个元组
- 星形模式的存储空间:
- 每个分类节点Level 0 一个元组
- K 每个分类级别一个属性
41. 星形模式和雪花模式的查询
- 查询:对于产品组”红酒“每个城市和年份下的销售情况
- 雪花模式
SELECT S_Name, YEAR(Z_Datum), SUM(V_Anzahl) FROM Verkauf, Filiale, Stadt, Produkt, Produktgruppe, Zeit WHERE V_Produkt_ID = P_ID ANDP_PGruppe_ID = PG_ID ANDV_Filial_ID = F_ID ANDF_Stadt_ID = S_ID ANDV_Zeit_ID = Z_ID ANDPG_Bezeichnung = ’Wein’ GROUP BY S_Name, YEAR(Z_Datum)
- Joins的数量: 5(随着聚合路径的数量线性增长)
- 星形模式
SELECT O_Stadt, YEAR(Z_Datum), SUM(V_Anzahl) FROM Verkauf, Ort, Produkt, Zeit WHERE V_Produkt_ID = P_ID ANDV_Zeit_ID = Z_ID ANDV_Ort_ID = O_ID ANDP_Produktgruppe = ’Wein’ GROUP BY O_Stadt, YEAR(Z_Datum)
- Joins的数量:3(与聚和路径的长度无关)
42. 混合形式
- 单个维度的构成类似于雪花模式或者星形模式
- 选择标准:
- 维度的更改频率
- 通过范式化减少维护的工作量(雪花模式)
- 一个维度中分类级别的数量
- 越多分类级别 → 星形模式中越多的冗余
- 维度元素的数量
- 通过对处于较低分类级别的维度上的大量元素范式化节省资源
- 聚合物化
- 通过对一个分类级别上的物化聚合进行范式化提高执行效率
- 维度的更改频率
43. 银河模式(Galaxie-Schema)
- 星形-和雪花模式
- 一个事实表
- 只可能在同样的维度上有多个特征值
- 银河模式
- 多个事实表
- 部分关联到相同的维度表
- 也:多事实表模式,多立方体,超级立方体
- 银河模式:模型
示例:
44. 分类层次结构的介绍
- 水平:将分类层次结构的级别建模为非范式化维度表的列
- 优点:
- 不含有Join的较高粒度的约束
- 缺点
- 查询某些级别时消除重复(比如:一个类别之内的产品组)
- 添加新级别的时候更改模式
- 优点:
Produkt_ID | Artikel | Produktgruppe | Produktkategorie |
1234 | IU | Hy | Ko |
1235 | Pu | Hy | Ko |
2345 | Ro | Re | Ha |
- 垂直(递归):范式化带属性的维度表
- Dimensions_ID :事实表的键
- Eltern_ID:下一更高级别Dimensions_ID的属性值
- 优点:
- 轻松的更改分类模式
- 容易处理预计算聚合
- 缺点:
- 为单个级别查询Self-Join(比如:一个类别之内的产品组)
Dimensions_ID | Eltern_ID |
IU | Hy |
Hy | Ko |
Pu | Hy |
- 合并:关联两种策略
- 使用列代表分类级别(但只适用一般性关系)
- 存储所有较高级别的节点作为元组
- 附加一类属性”Stufe“(级别) → 描述特定的分类级别
Dimensions_ID | Stufe1_ID | Stufe2_ID | Stufe |
IU | Hy | Ko | 0 |
Pu | Hy | Ko | 0 |
Hy | Ko | Null | 1 |
Ko | Null | Null | 2 |
45.避免语义丢失
- 关系映射中的语义丢失
- 特征值和维度之间的区别(事实表的属性)
- 维度表的属性(层次结构的描述,搭建)
- 维度的搭建(Drill-路径)
- 方法:
- 为多维度应用的元数据拓展系统目录
- 示例:Oracle中的CREATE DIMENSION, HIERARCHY
46. 关系实现的问题
- 将多维查询转换为关系表达是有必要的 → 复杂查询
- 使用复杂的查询工具是有必要的(OLAP-工具)
- 语义丢失
- 因此:直接多维存储
47. 缓慢改变维度
- 历史化:属性表达,关系和实体随着时间的改变
- 维度中的结构改变
- 维度中的模式改变
- 对分析的影响
48. 分析要求
- 根据现有结构:as is
- 根据定义的历史结构:as of
- 根据历史事实:as posted
- 可对比结果
- 右侧事实表,左侧产品维度在2010和2011的产品和其对应的产品组
- 报表要求(根据事实表和维度表获取的下表)
- 特别注意:”对比结果“的计算方法是,统计维度表中没有随着时间而改变的项目。
49. 实现
- 将历史数据资料调整为新结构的小型数据集,但是旧结构不再可用
- 历史数据库的分离存储附加在新结构上,为用户提供大量数据和复杂性,但是旧结构可以被检索
- 建立具有所有结构的并行层次结构,维度结构复杂,可能进行任意报告
- 有效性标记任何可检索到的结构,但是会出现性能问题
50. 场景
- ”As is“场景
- 容易实现
- 不存在历史
- 只提供给”as is“
- ”as is“ & quasi ”as of“场景
- 更高的存储需求
- 没有时间顺序的历史
- 对应于并行层次结构
- ”as is“ & ”as of“场景
- 较高存储需求
- 没有时间顺序的历史
- 必要的人工维度键
- ”as is“ & ”as of“场景:时间戳
- 更高的存储需求
- 带时间顺序的历史
- 必要的人工维度键(或者复合键)
- 事实联结Getraenk_ID
- ”as posted“场景
- 更高的存储需求
- 事务时间点的历史
- 必要的人工维度键(或者复合键)
- 事实联结G_ID_alt
- ”as is“ & ”as of“ & ”as posted“场景: 快照
- 维度表和事实表更高的存储需求
- 当前分配的标志
- 人工加载时间点数据
- 仅仅为小维度推荐值
总结
- 多维度数据模型
- 立方体,特征值,维度
- OLAP操作
- 概念建模技术
- 没有类似ER模型的标准
- 多维概念的专用结构
- 多维模型的实现
- 关系:星形模式和雪花模式
- 混合模式
- 避免语义丢失
数据仓库技术(Data Warehouse Technologien) 第三章节 多维数据模型(3)相关推荐
- 大数据-数据仓库(Data Warehouse):概述【面向主题的、集成的、相对稳定的、反映历史变化的数据集合;是一个数据处理过程(清洗、转义、分类、重组、合并、拆分、统计等)】
一.数据仓库介绍 1.数据仓库概念 数据仓库概念创始人在<建立数据仓库>一书中对数据仓库的定义是:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented ...
- 大数据开发---数据仓库技术
1.什么是数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH.数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它出于分析性报告和决策支持目的而创 ...
- 数据仓库技术的发展历程
定义 数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境.数据仓库研究和解决从数据库中获取信息的问题.数据仓库的特征在于面向主题.集成性.稳定性和时变性. 数据仓库之父Bill In ...
- 大数据开发实战:数据仓库技术
1.OLTP和OLAP OLTP的全称是 Online Transaction Processing, OLTP主要用传统的关系型数据库来进行事务处理.OLTP最核心的需求是单条记录的高效快速处理,索 ...
- 《数据仓库与数据挖掘教程》ch01绪论 章节整理
数据仓库概述 从传统数据库到数据仓库 计算机数据处理有两种主要方式 事务型处理 分析型处理 传统数据库与事务处理 传统数据库是长期存储在计算机内的.有组织的.可共享的数据集合 有严格的数学理论支持,并 ...
- 电子商务中的数据仓库技术
电子商务中的数据仓库技术 Data Warehousing for E-Business W.H. Inmon 1 电子商务的基于和挑战 ERP CRM EAI,数据仓库工程 挑战:数据量.数据周转速 ...
- 【商务智能】数据仓库 ( 多维数据模型 | 多维数据分析 )
商务智能系列文章目录 [商务智能]数据预处理 [商务智能]数据仓库 ( 多维数据模型 | 多维数据分析 ) 文章目录 商务智能系列文章目录 前言 一.数据仓库 与 传统数据库 区别 二.数据仓库系统体 ...
- 一文搞懂什么是数据仓库(Data Warehouse)数据仓库与数据库区别有哪些?什么是元数据?
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 前期回顾 ...
- TDW(Tencent Data Warehouse)之hive简介
1. 基本概念 Hive是由Facebook在2007年8月开始开发,并于2008年8月开源(https://issues.apache.org/jira/browse/HADOOP-3601 ...
- ETL(数据仓库技术)
ETL(数据仓库技术) ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract).转置(transform).加载(load)至目的端的过程. ...
最新文章
- 1、Android测试入门
- GridView实现自动编号
- 解决git bash闪退问题
- python基础内容_python基础-python介绍
- BLE-NRF51822教程1-常用概念
- 虚拟化精华问答 | 什么是虚拟化?
- 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方
- 79-Spark Standalone架构设计要点分析
- Android学习笔记---09_深入了解各种布局技术
- 《数字图像处理》--冈萨雷斯(第十章)
- 阿里云maven仓库地址
- 【笔记】排列组合公式、二项式定理
- A Comprehensive Measurement Study of Domain Generating Malware 原文翻译
- python基础之字符串(七)
- Work Tasks
- Ubuntu 登录界面键盘鼠标失效的解决方案
- 计算机网络之Dos、DDos攻击
- 修改oracle nls_language
- 汉诺塔(hanoi tower)游戏
- 快速生成 HTML 表格代码