[转]ETL模型设计
http://www.alidw.com/?p=309
传统的关系数据库一般采用二维数表的形式来表示数据,一个维是行,另一个维是列,行和列的交叉处就是数据元素。关系数据的基础是关系数据库模型,通过标准的SQL语言来加以实现。
数据仓库是多维数据库,它扩展了关系数据库模型,以星形架构为主要结构方式的,并在它的基础上,扩展出理论雪花形架构和数据星座等方式,但不管是哪一种架构,维度表、事实表和事实表中的量度都是必不可少的组成要素。
维度:是多维数据集的结构性特性。它们是事实数据表中用来描述数据的分类的有组织层次结构(级别)。这些分类和级别分别描述了一些相似的成员集合,用户将基于这些成员集合进行分析。
度量值:在多维数据集中,度量值是一组值,这些值基于多维数据集的事实数据表中的一列,而且通常为数字。此外,度量值是所分析的多维数据集的中心值。即,度量值是最终用户浏览多维数据集时重点查看的数字数据(如销售、毛利、成本)。所选择的度量值取决于最终用户所请求的信息类型。一些常见的度量值有sales、cost、expenditures和production count等
事实表是数据聚合后依据某个维度生成的结果表。
1) 星型模型
星形模型是最常用的数据仓库设计结构的实现模式,它使数据仓库形成了一个集成系统,为最终用户提供报表服务,为用户提供分析服务对象。星形模式通过使用一个包含主题的事实表和多个包含事实的非正规化描述的维度表来支持各种决策查询。星形模型可以采用关系型数据库结构,模型的核心是事实表,围绕事实表的是维度表。通过事实表将各种不同的维度表连接起来,各个维度表都连接到中央事实表。维度表中的对象通过事实表与另一维度表中的对象相关联这样就能建立各个维度表对象之间的联系。每一个维度表通过一个主键与事实表进行连接。
事实表主要包含了描述特定商业事件的数据,即某些特定商业事件的度量值。一般情况下,事实表中的数据不允许修改,新的数据只是简单地添加进事实表中,维度表主要包含了存储在事实表中数据的特征数据。每一个维度表利用维度关键字通过事实表中的外键约束于事实表中的某一行,实现与事实表的关联,这就要求事实表中的外键不能为空,这与一般数据库中外键允许为空是不同的。这种结构使用户能够很容易地从维度表中的数据分析开始,获得维度关键字,以便连接到中心的事实表,进行查询,这样就可以减少在事实表中扫描的数据量,以提高查询性能。
使用星形模式主要有两方面的原因:提高查询的效率。采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高,同时由于维表一般都很小,甚至可以放在高速缓存中,与事实表进行连接时其速度较快,便于用户理解;对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。
2) 雪花模型
雪花模型是对星形模型的扩展,每一个维度都可以向外连接多个详细类别表。在这种模式中,维度表除了具有星形模型中维度表的功能外,还连接对事实表进行详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。
雪花模型对星形模型的维度表进一步标准化,对星形模型中的维度表进行了规范化处理。雪花模型的维度表中存储了正规化的数据,这种结构通过把多个较小的标准化表(而不是星形模型中的大的非标准化表)联合在一起来改善查询性能。由于采取了标准化及维的低粒度,雪花模型提高了数据仓库应用的灵活性。
这些连接需要花费相当多的时间。一般来说,一个雪花形图表要比一个星形图表效率低。
3) 星座模式
一个复杂的商业智能应用往往会在数据仓库中存放多个事实表,这时就会出现多个事实表共享某一个或多个维表的情况,这就是事实星座,也称为星系模式(galaxy schema)。
4) 数据集市
数据集市是在构建数据仓库的时候经常用到的一个词汇。如果说数据仓库是企业范围的,收集的是关于整个组织的主题,如顾客、商品、销售、资产和人员等方面的信息,那么数据集市则是包含企业范围数据的一个子集,例如只包含销售主题的信息,这样数据集市只对特定的用户是有用的,其范围限于选定的主题。
数据集市面向企业中的某个部门(或某个主题)是从数据仓库中划分出来的,这种划分可以是逻辑上的,也可以是物理上的。
数据仓库中存放了企业的整体信息,而数据集市只存放了某个主题需要的信息,其目的是减少数据处理量,使信息的利用更加快捷和灵活。
数据仓库由于是企业范围的,能对多个相关的主题建模,所以在设计其数据构成时一般采用星系模式。
转载于:https://www.cnblogs.com/sanpoye/archive/2012/03/19/2406002.html
[转]ETL模型设计相关推荐
- kettle定时调度管理平台
kettle调度平台-精卫平台:https://gitee.com/yhtmxl/kettle/tree/master webKettleETL产品介绍 精卫ETL平台,创造性的将平台构建为B/S架构 ...
- 系统设计与架构笔记:ETL工具开发和设计的建议
好久没写博客了,不是自己偷懒,的确是没有时间哦. 最近项目组里想做一个ETL数据抽取工具,这是一个研发项目,但是感觉公司并不是特别重视,不重视不是代表它不重要,而是可能不会对这个项目要求太高,能满足我 ...
- 数据中台模型设计系列(一):维度建模初探
1.与几个概念的关系 操作型业务系统对于这个概念大家都不陌生.企业业务赖以运转的交易系统就属于操作型业务系统.因此它是为了保障业务正常运转,能够更快的处理事务. 但是因为它是针对某一特定的意图(例如满 ...
- ETL学习之四:SQL Server Integration Services入门
ETL学习之四:SQL Server Integration Services入门 SSIS就是微软在SQL SERVER2005上对DTS的升级,不得不说,微软在BI上是花了很大功夫的,包括提供了S ...
- 基于 Flink 的典型 ETL 场景实现
简介: 本文将从数仓诞生的背景.数仓架构.离线与实时数仓的对比着手,综述数仓发展演进,然后分享基于 Flink 实现典型 ETL 场景的几个方案. 作者:买蓉 · 美团点评高级技术专家 整理:赵阳(F ...
- 技术分享丨数据仓库的建模与ETL实践技巧
一.数据仓库的"心脏" 首先来谈谈数据模型.模型是现实世界特征的模拟和抽象,比如地图.建筑设计沙盘,飞机模型等等. 而数据模型DataModel是现实世界数据特征的抽象. 在数据仓 ...
- 《ETL原理及应用》学习笔记 ·002【需求和数据建模】
注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 Tips:本节内容偏概念性,做简单了解即可 文章目录 一.需求 ...
- 一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划
作者 | Alice菌 责编 | 王晓曼 出品 | CSDN博客 数据仓库纬度模型设计 1. 纬度建模基本概念 维度模型是数据仓库领域大师Ralph Kimall所倡导,他的<数据仓库工具箱&g ...
- 阿里数据仓库架构与模型设计
来源:数据学堂 编辑:谈数据 全文共 8636 个字,建议阅读 18 分钟 本文将分如下4个部分,介绍阿里巴巴DataWorks的数仓架构与模型设计方法: 技术架构选型 数仓分层 数据模型 层次调用规 ...
- 如何编写BI项目之ETL文档
XXXXBI项目之ETL文档 xxx项目组 ------------------------ ...
最新文章
- python搜索关键词自动提交订单_Python批量获取淘宝相关搜索和下拉框关键词
- 将Excel数据导入SQL Server数据库
- 运行Python程序的2种方式
- 为什么使用NoSql及NoSql的优点
- 云服务器安装操作系统后如何连接,服务器如何安装操作系统
- Postfix实现代理Exchange邮件传输方案
- c语言win api函数,Win2K下的Api函数的拦截
- EMC NetWorker简单管理指南(二)
- Linux下的编曲软件,MuseScore(免费作曲编曲软件) V3.0.1 Linux版
- 选择云盾抗ddos防火墙,信息安全有保障
- 一步一步排查真实拍图片不能上传的问题
- Unity Metaverse(二)、Mixamo Animator 混合树与动画融合
- xp驱动和Win7驱动的区别
- 计算机图形学5--绘制基本图元
- 西门子服务器提升抱闸信号不输出,SINAMICS V90伺服抱闸接线及配置详解
- VMR-21论文总结
- 教你三分钟修改视频画面的尺寸大小
- 365.水壶问题笔记
- 打怪升级之FIFO读完了再读会坏掉嘛?
- 【MOOC】现代密码学(成电)(1)概述
热门文章
- c语言随机抽取小程序_c++ c语言编写抽学号小程序
- openocd调试Linux内核,如何结合Eclipse+OpenOCD+arm-none-eabi-gdb实现可视化在线调试ARM Cortex M7内核?...
- Leetcode之最长回文子串
- easyui 1.4.3 窗口创建或拖动超过父元素 边界 BUG 解决方法
- IDEA 常用设置 与 常用操作(二)
- 评论字数限制php,WordPress评论字数限制
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_02-自定义查询页面-服务端-接口开发...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_8_使用try_catch_finally处理流中的异常...
- 操作系统核心原理-4.线程原理(上):线程基础与线程同步
- Ubuntu安装最新版nodejs