当前位置: 首页 > news >正文

ETL模型设计

        传统的关系数据库一般采用二维数表的形式来表示数据,一个维是行,另一个维是列,行和列的交叉处就是数据元素。关系数据的基础是关系数据库模型,通过标准的SQL语言来加以实现。

数据仓库是多维数据库,它扩展了关系数据库模型,以星形架构为主要结构方式的,并在它的基础上,扩展出理论雪花形架构和数据星座等方式,但不管是哪一种架构,维度表、事实表和事实表中的量度都是必不可少的组成要素。

        维度:是多维数据集的结构性特性。它们是事实数据表中用来描述数据的分类的有组织层次结构(级别)。这些分类和级别分别描述了一些相似的成员集合,用户将基于这些成员集合进行分析。

        度量值:在多维数据集中,度量值是一组值,这些值基于多维数据集的事实数据表中的一列,而且通常为数字。此外,度量值是所分析的多维数据集的中心值。即,度量值是最终用户浏览多维数据集时重点查看的数字数据(如销售、毛利、成本)。所选择的度量值取决于最终用户所请求的信息类型。一些常见的度量值有salescostexpendituresproduction count

        事实表是数据聚合后依据某个维度生成的结果表。

1) 星型模型

        星形模型是最常用的数据仓库设计结构的实现模式,它使数据仓库形成了一个集成系统,为最终用户提供报表服务,为用户提供分析服务对象。星形模式通过使用一个包含主题的事实表和多个包含事实的非正规化描述的维度表来支持各种决策查询。星形模型可以采用关系型数据库结构,模型的核心是事实表,围绕事实表的是维度表。通过事实表将各种不同的维度表连接起来,各个维度表都连接到中央事实表。维度表中的对象通过事实表与另一维度表中的对象相关联这样就能建立各个维度表对象之间的联系。每一个维度表通过一个主键与事实表进行连接。

        事实表主要包含了描述特定商业事件的数据,即某些特定商业事件的度量值。一般情况下,事实表中的数据不允许修改,新的数据只是简单地添加进事实表中,维度表主要包含了存储在事实表中数据的特征数据。每一个维度表利用维度关键字通过事实表中的外键约束于事实表中的某一行,实现与事实表的关联,这就要求事实表中的外键不能为空,这与一般数据库中外键允许为空是不同的。这种结构使用户能够很容易地从维度表中的数据分析开始,获得维度关键字,以便连接到中心的事实表,进行查询,这样就可以减少在事实表中扫描的数据量,以提高查询性能。

        使用星形模式主要有两方面的原因:提高查询的效率。采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高,同时由于维表一般都很小,甚至可以放在高速缓存中,与事实表进行连接时其速度较快,便于用户理解;对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。

2) 雪花模型

        雪花模型是对星形模型的扩展,每一个维度都可以向外连接多个详细类别表。在这种模式中,维度表除了具有星形模型中维度表的功能外,还连接对事实表进行详细描述的详细类别表,详细类别表通过对事实表在有关维上的详细描述达到了缩小事实表和提高查询效率的目的。

        雪花模型对星形模型的维度表进一步标准化,对星形模型中的维度表进行了规范化处理。雪花模型的维度表中存储了正规化的数据,这种结构通过把多个较小的标准化表(而不是星形模型中的大的非标准化表)联合在一起来改善查询性能。由于采取了标准化及维的低粒度,雪花模型提高了数据仓库应用的灵活性。

        这些连接需要花费相当多的时间。一般来说,一个雪花形图表要比一个星形图表效率低。

雪花形与星形层次结构的差异

 

   

   

行数

可读性

容易

表格数量

搜索维的时间

 

3) 星座模式

个复杂的商业智能应用往往会在数据仓库中存放多个事实表,这时就会出现多个事实表共享某一个或多个维表的情况,这就是事实星座,也称为星系模式(galaxy schema)。

4) 数据集市

        数据集市是在构建数据仓库的时候经常用到的一个词汇。如果说数据仓库是企业范围的,收集的是关于整个组织的主题,如顾客、商品、销售、资产和人员等方面的信息,那么数据集市则是包含企业范围数据的一个子集,例如只包含销售主题的信息,这样数据集市只对特定的用户是有用的,其范围限于选定的主题。

        数据集市面向企业中的某个部门(或某个主题)是从数据仓库中划分出来的,这种划分可以是逻辑上的,也可以是物理上的。

        数据仓库中存放了企业的整体信息,而数据集市只存放了某个主题需要的信息,其目的是减少数据处理量,使信息的利用更加快捷和灵活。

        数据仓库由于是企业范围的,能对多个相关的主题建模,所以在设计其数据构成时一般采用星系模式。

5)面向对象在ETL设计中的应用

        模块化、低耦合高内聚、设计模式、继承、接口等思想可以很好的应用到ETL设计当中去。

 

 

 

 

 

相关文章:

  • python-函数用法
  • 数据集市
  • 纳税服务系统【自动受理,Quartz任务调度】
  • 小笑话集锦
  • mac下git配置和jenkins打包
  • 三国中最精辟的十句话
  • BFS模版程序
  • 毕业5年决定一生
  • 【bzoj3123】[Sdoi2013]森林 倍增LCA+主席树+启发式合并
  • 电子商务推荐算法
  • 每个人必须知道的社会生活十二大著名法则
  • 如何更改PHPCMS网站后台标题(title)
  • 数据挖掘常见软件
  • sql语句中like的用法详细解析
  • 世界上应该珍惜的五个人
  • 4个实用的微服务测试策略
  • AngularJS指令开发(1)——参数详解
  • C# 免费离线人脸识别 2.0 Demo
  • classpath对获取配置文件的影响
  • es的写入过程
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Promise面试题,控制异步流程
  • quasar-framework cnodejs社区
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Vue2.0 实现互斥
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Wamp集成环境 添加PHP的新版本
  • 聚簇索引和非聚簇索引
  • 漂亮刷新控件-iOS
  • 我是如何设计 Upload 上传组件的
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Mac 上flink的安装与启动
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (13)DroneCAN 适配器节点(一)
  • (2)(2.10) LTM telemetry
  • (4.10~4.16)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (含答案)C++笔试题你可以答对多少?
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (四)Linux Shell编程——输入输出重定向
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)Linq学习笔记
  • (转)创业的注意事项
  • .dwp和.webpart的区别
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core 外观者设计模式 实现,多种支付选择
  • .net 提取注释生成API文档 帮助文档
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .Net小白的大学四年,内含面经
  • @Bean, @Component, @Configuration简析
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @Transactional类内部访问失效原因详解