Star Schema and Snowflake Schema

在设计数据仓库模型的时候,最常见的两种是星型模型与雪花模型。选择哪一种需要根据业务需求以及性能的多重考量来定。

星型模型


  在星型模型当中,一张事实表被若干张维度表所包围。每一个维度代表了一张表,有主键关联事实表当中的外键。

  •  所有的事实都必须保持同一个粒度
  • 不同的维度之间没有任何关联
  •   

雪花模型


  雪花模型是在基于星型模型之上拓展来的,每一个维度可以再扩散出更多的维度,根据维度的层级拆分成颗粒度不同的多张表。

  • 优点是减少维度表的数据量,在进行join查询时有效提升查询速度
  • 缺点是需要额外维护维度表的数量

优劣对比


小结


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

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

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

猜你喜欢

转载自www.cnblogs.com/tgzhu/p/9084007.html