理解数据仓库中星型模型和雪花模型

27 篇文章 1 订阅

在数据仓库的建设中,一般都会围绕着星型模型和雪花模型来设计表关系或者结构。下面我们先来理解这两种模型的概念。

(一)星型模型图示如下:

image

星型模是一种多维的数据关系,它由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。这也是我们在使用hive时,经常会看到一些大宽表的原因,大宽表一般都是事实表,包含了维度关联的主键和一些度量信息,而维度表则是事实表里面维度的具体信息,使用时候一般通过join来组合数据,相对来说对OLAP的分析比较方便。

(二)雪花模型图示如下: image

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。雪花模型更加符合数据库范式,减少数据冗余,但是在分析数据的时候,操作比较复杂,需要join的表比较多所以其性能并不一定比星型模型高。

(三)星型模型和雪花模型的优劣对比:

属性星型模型雪花模型
数据总量
可读性 容易
表个数
查询速度
冗余度
对实时表的情况 增加宽度 字段比较少,冗余底
扩展性

(四)应用场景

星型模型的设计方式主要带来的好处是能够提升查询效率,因为生成的事实表已经经过预处理,主要的数据都在事实表里面,所以只要扫描实时表就能够进行大量的查询,而不必进行大量的join,其次维表数据一般比较少,在join可直接放入内存进行join以提升效率,除此之外,星型模型的事实表可读性比较好,不用关联多个表就能获取大部分核心信息,设计维护相对比较简答。

雪花模型的设计方式是比较符合数据库范式的理念,设计方式比较正规,数据冗余少,但在查询的时候可能需要join多张表从而导致查询效率下降,此外规范化操作在后期维护比较复杂。

(五)总结

通过上面的对比,我们可以发现数据仓库大多数时候是比较适合使用星型模型构建底层数据Hive表,通过大量的冗余来提升查询效率,星型模型对OLAP的分析引擎支持比较友好,这一点在Kylin中比较能体现。而雪花模型在关系型数据库中如MySQL,Oracle中非常常见,尤其像电商的数据库表。在数据仓库中雪花模型的应用场景比较少,但也不是没有,所以在具体设计的时候,可以考虑是不是能结合两者的优点参与设计,以此达到设计的最优化目的。


  • 23
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
传统的关系数据库一般采用二维数据表的形式来表示数据,以维是行,另一维是列,行和列的交叉处就是数据元素。关系数据的基础是关系数据库模型,通过标准的SQL语言来加以实现。       数据仓库是多维数据库,它扩展了关系数据库模型,以星型架构为主要结构方式的,并在它的基础上,扩展出理论雪花形架构和数据星座等方式,但是不管是哪一种架构,维度表、事实表和事实表的度量都是必不可少的组成元素。        数据集市是在构建数据仓库的时候经常用到的一个词汇。如果说数据仓库是企业范围的,收集的是关于整个组织的主题,如顾客、商品、销售、资产和人员等方面的信息,那么数据集市则是包含企业范围数据的一个子集,例如之包含销售主题的信息,这样数据集市只对特定的用户是有用的,起范围限定于选定的主题。       宏观上的数据仓库设计分为以下三个大阶段:规划分析阶段、设计实施阶段、使用维护阶段。这三个阶段是循环运动过程。规划分析阶段包括:规划与确定需求、开发概念模型、开发逻辑模型;设计实施阶段包括:设计体系结构、数据库与元数据设计、数据抽取转换与加载、开发间件、填充与测试数据仓库;使用维护阶段包括:数据仓库应用、数据仓库维护和数据仓库评价。
星型模型雪花模型都是数据仓库常见的数据建模结构,它们的主要区别在于维度表的结构和组织方式。 1. 星型模型星型模型是一种简单且直观的数据建模结构,其一个心的事实表与多个维度表通过外键关联。事实表包含了度量(数值)数据,而维度表包含了描述度量数据的属性。特点如下: - 心的事实表:星型模型只有一个心的事实表,它包含了业务过程的度量数据,例如销售金额、订单数量等。 - 扁平的维度表:维度表与事实表直接关联,维度表通常以扁平的结构存储,每个维度对应一个表,例如时间维度、产品维度、地理维度等。 - 简单易懂:星型模型结构简单、直观,易于理解和查询。它适用于较小规模的数据仓库和简单的分析需求。 2. 雪花模型雪花模型是在星型模型基础上进一步规范化的数据建模结构,它通过多个层级的维度表来组织数据。特点如下: - 规范化的维度表:雪花模型的维度表被进一步规范化,即将维度表的属性分解为更小的子表。这些子表通过主键和外键关联,形成多层级的维度结构。例如,在产品维度,可以将产品信息拆分为产品类别表、产品子类别表和产品表。 - 更高的数据规范性:雪花模型通过规范化减少了数据冗余,提高了数据的一致性和准确性。但同时也增加了查询的复杂性。 - 复杂查询:由于存在多层级的关联,查询雪花模型需要进行更多的关联操作。这可能会增加查询的开销和复杂性。 - 适用于大规模数据仓库雪花模型适用于大规模数据仓库和复杂的分析需求,可以提供更灵活和精细的数据分析能力。 总结: 星型模型适用于简单的数据仓库和分析需求,结构简单易懂;雪花模型适用于大规模数据仓库和复杂的分析需求,通过规范化提高了数据一致性,但查询复杂度较高。选择合适的模型取决于具体的业务需求和数据特点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值