美文网首页
数据仓库与数仓建模

数据仓库与数仓建模

作者: 鄙人王道长 | 来源:发表于2020-07-11 17:52 被阅读0次
    u=3186997546,1762170182&fm=26&gp=0.jpg

    1.数据仓库

    1.1 什么是数据仓库

    数据仓库,英文名为Data Warehouse,简写为DW或DWH。数据仓库,是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持[1]。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制[2]。

    1.2 数据仓库的四个特点

    • 面向主题:数据仓库是按照一定的主题来组织,仅存储与主题相关的数据。主题是指用户在构建数仓时考虑决策时所关注的重点方面,方便以后的数据分析。

    • 集成:数仓的数据来源是任意的,可以是操作型数据库,也可以是网络爬虫,这些数据经过加工与集成,统一成新的数据源。

    • 随时间变化:数仓每天都会从不同数据渠道获取大量数据,关键数据会隐式或显式的基于时间变化。

    • 数据相对稳定:数据进入后一般只进行查询操作,不会进行删改。

    1.3 数仓分层

    image-20200711150750638.png

    1.4 数仓为什么要分层

    1. 把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题。

    2. 减少重复开发:规范数据分层,通过中间层数据,能够减少重复的数据计算,增加计算结果的重用性;

    3. 隔离原始数据:使真实数据与统计数据隔离开。

    1.5 数据仓库与数据库的区别

    功能 数据仓库 数据库
    数据范围 存储历史的、完整的、反应历史变化的数据 当前状态数据
    数据变化 可添加、无删除、无变更、反应历史变化 支持频繁的增删改查
    应用场景 面向分析、支持战略决策 面向业务流程
    设计理论 伪范式、适当冗余 遵照范式(一、二、三范式),避免冗余
    处理量 非频繁、大批量、高吞吐、有延迟 频繁、小批次、高并发、低延迟

    2.关系建模与维度建模

    2.1 关系建模

    image-20200711152649050.png

    关系模型如图所示,严格遵循第三范式(3NF),从图中可以看出,较为松散、零碎,物理表数量多,而数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。关系模型主要应用与OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。

    2.2 维度建模

    image-20200711152943415.png

    维度模型如图所示,主要应用于OLAP系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。

    关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以通常我们采用维度模型建模,把相关各种表整理成两种:事实表和维度表两种。

    在维度建模的基础上还可以分为三种模型:星型模型、雪花模型、星座模型

    2.2.1星型模型

    image-20200711153405388.png

    标准的星型模型周围只有一层,即一个事实表周围只有一层维度表与之对应。

    2.2.2雪花模型

    image-20200711153637222.png

    雪花模型的维度层级比星型模型多,雪花模型比较靠近3NF,但无法完全遵守,因为遵守3NF的新能成本太高。

    2.2.3 星座模型

    image-20200711153919763.png

    星座模型与前两个模型的区别在于事实表的数量,星座模型中的事实表要多。而且事实表之间也有可能会共享维度表。

    2.2.4 模型的选择

    首先星座与否与数据和需求有关系,与设计无关,不用抉择。

    星型还是雪花,取决于性能优先,还是灵活优先。

    实际开发中,不会只选择一种,根据情况灵活组合,甚至并存。但是整体来看,更倾向于维度更少的星型模型。尤其是Hadoop体系,减少join就是减少shuffle,性能差别很大。

    3.数仓建模

    3.1 数仓建模的目的

    为什么要进行数据仓库建模?大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑

    1. 访问性能:能够快速查询所需的数据,减少数据I/O

    2. 数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数 据系统中的存储成本和计算成本

    3. 使用效率:改善用户应用体验,提高使用数据的效率

    4. 数据质量:改善数据统计口径的不一致性,减少数据计算错误 的可能性,提供高质量的、一致的数据访问平台[3]。

    3.2 ODS层

    1. 保持数据原貌不做任何修改,起到备份数据的作用;

    2. 数据采用压缩存储,减少磁盘空间;

    3. 创建分区表,防止全盘扫描

    3.3 DWD层

    DWD层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型

    维度建模一般按照以下四个步骤:


    image-20200711171558295.png

    3.4 DWS层

    统计各个主题对象的当天行为,服务于DWT层的主题宽表,以及一些业务明细数据,应对特殊需求(例如,购买行为,统计商品复购率)。

    3.5 DWT层

    以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全量宽表。

    3.6 ADS层

    对电商系统各大主题指标分别进行分析。

    更多首发文章请关注公众号【鄙人王道长】

    [ 1 ] https://www.jianshu.com/p/0b6414f92442

    [ 2 ] http://www.databi.cn/article-76-1.html

    [ 3 ] https://blog.csdn.net/qq_26442553/article/details/105506364

    相关文章

      网友评论

          本文标题:数据仓库与数仓建模

          本文链接:https://www.haomeiwen.com/subject/nsbicktx.html