• 数据仓库与维度建模


    维度建模的基本概念

    维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。

            它本身属于一种关系建模方法,包含了基本的两个概念:

    1. 维度表(dimension)

            表示对分析主题所属类型的描述。比如"昨天早上张三在京东花费200元购买了一个皮包"。那么以购买为主题进行分析,可从这段信息中提取三个维度:时间维度(昨天早上),地点维度(京东), 商品维度(皮包)。通常来说维度表信息比较固定,且数据量小。

    2. 事实表(fact table)

            表示对分析主题的度量。比如上面那个例子中,200元就是事实信息。事实表包含了与各维度表相关联的外码,并通过JOIN方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。

    注:在数据仓库中不需要严格遵守规范化设计原则(具体原因请看上篇)。本文示例中的主码,外码均只表示一种对应关系,此处特别说明

    维度建模的三种模式

    1. 星形模式

            星形模式(Star Schema)是最常用的维度建模方式,下图展示了使用星形模式进行维度建模的关系结构:

    1

    可以看出,星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:

                    a. 维表只和事实表关联,维表之间没有关联;

                    b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;

                    c. 以事实表为核心,维表围绕核心呈星形分布;

    2. 雪花模式

            雪花模式(Snowflake Schema)是对星形模式的扩展,每个维表可继续向外连接多个子维表。下图为使用雪花模式进行维度建模的关系结构:

    2

    星形模式中的维表相对雪花模式来说要大,而且不满足规范化设计。雪花模型相当于将星形模式的大维表拆分成小维表,满足了规范化设计。然而这种模式在实际应用中很少见,因为这样做会导致开发难度增大,而数据冗余问题在数据仓库里并不严重。

    3. 星座模式

    星座模式(Fact Constellations Schema)也是星型模式的扩展。基于这种思想就有了星座模式:

    3

    4. 三种模式对比

    归纳一下,星形模式/雪花模式/星座模式的关系如下图所示

    4

    雪花模式是将星型模式的维表进一步划分,使各维表均满足规范化设计。而星座模式则是允许星形模式中出现多个事实表。本文后面部分将具体讲到这几种模式的使用,请读者结合实例体会。

  • 相关阅读:
    Linux系统排查1——内存篇
    (原创)Python字符串系列(1)——str对象
    (原创)Python文件与文件系统系列(2)——os模块对文件、文件系统操作的支持
    (原创)Python文件与文件系统系列(5)——stat模块
    (原创)Python文件与文件系统系列(4)——文件描述字操作
    CenterOS7——使用yum命令报错Could not retrieve mirrorlist
    awk 查询某一列大于1900的值
    /bin/bash^M: bad interpreter: No such file or directory
    linux 设置时间同步
    CentOS7 服务器分析挖矿病毒,清理挖矿病毒 tor2web
  • 原文地址:https://www.cnblogs.com/lipengfei/p/8626815.html
Copyright © 2020-2023  润新知