数据仓库搭建流程及数据模型 - 南北极星

jcliaoyb 2021-10-09 原文


数据仓库搭建流程及数据模型

建模流程

业务建模

根据业务部门进行划分,理清部门之间的关系,然后将各个部门的具体业务程序化,与业务部门开会协商出需求的指标、保存年限、维度等等。总体来讲,就是要知道他们需要哪些指标以及他们能提供哪些数据。业务建模的时间最长,而且与公司实际的业务环境息息相关,因此在这里需要根据实际生产环境和业务需求确认好数据仓库使用的工具和平台。

概念建模

将业务模型抽象化,分组合并类似的概念,细化概念,抽象出实体与实体之间的联系,理清各组概念之间的联系。说白了就是画图,把指标需要的哪些数据封装到一个实体里,实体与实体之间的关联等等用ER图表示出来。先画出局部ER图,最后再综合画出全局ER图。

逻辑建模

将概念模型实体化,具体考虑概念对应的属性,事件考虑事实属性,维度考虑维度属性。总体来说就是建表,前面已经画出了关系图,这里只要将表里头有哪些字段考虑出来就可以,如果是事实表就考虑事实字段和业务主键,如果是维度表就考虑维度属性,SCD策略等等。在这里需要确定数据粒度,如果多个指标都用到一个字段,则取粒度最小的指标。如果不确定指标的量度,则取毫秒级作为粒度。

物理建模

综合现实的大数据平台、采集工具、etl工具、数仓组件、性能要求、管理要求等多方面因素,设计出具体的项目代码,完成数仓的搭建。

7.4.2 数据模型

星型模型

数仓(具体说是dwd层)中只有一张包含历史数据且不冗余的事实表和一组附属维度表,每个维度一张。事实表与维度表之间通过外键和主键关联。星型模型的维度表可能存在冗余,因此是反三范式的,这种模型在数据维护上较麻烦,但是性能更高,业界普遍使用星型模型。星型模型的难点在于拉链表的维护,拉链表一般不能有冗余。

雪花模型

针对星型模型的维度表进行扩展的模型,将维度表拆解成维度表+说明表,说明表又可以进一步拆分,最终形成事实表-维度表-说明表的多次连接。雪花模型的表一般遵循三范式,在数据的维护上会很方便,但是多表join影响性能。

星系模型

多个事实表采用星型模型共享维度表,就形成了一个星系。

Data Vault模型

从上述模型中我们不难看出,如果解决了拉链表的维护问题,星型模型的缺陷就已经可以忽略。Data Vault模型由中心表、链接表、附属表、PIT表组成,这里的中心表,事实上就是维度表,链接表就是事实表、附属表是拉链表。Data Vault模型就是通过将拉链表从维度表中分离出来,来达到方便维护的目的。首先,中心表是一组业务生命周期内绝不会变的维度表,打个比方就是java里头的常量,常量再怎么冗余也不会有影响。链接表则是保存流水类数据的事实表,它通过外键与多张中心表连接,但不会连接附属表。附属表则是从维度表中抽出来的可能会发生变化的字段或表,这一部分就采用拉链表的方式创建,中心表则通过外键关联附属表的主键。

从同一维度表拆出来的字段根据变化维度不同可能还要分成多表存储,为了避免时效不一致,所以还会建立一张PIT表,用于维护附属表的变化历史。中心表通过外键与PIT表相连,而PIT表则为每个附属表的主键都准备了一个时间字段保存数据的更新时间。

 

发表于
2020-04-26 22:56 
南北极星 
阅读(2286
评论(0
编辑 
收藏 
举报

 

版权声明:本文为jcliaoyb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jcliaoyb/p/12783080.html

数据仓库搭建流程及数据模型 - 南北极星的更多相关文章

  1. [Abp vNext 源码分析] – 12. 后台作业与后台工作者

    一、简要说明 文章信息: 基于的 ABP vNext 版本:1.0.0 创作日期:2019 年 10 月 24 […]...

  2. 网络经典命令行(推荐给想学黑客的) – 老有所依

    网络经典命令行(推荐给想学黑客的) Windows 2k/2003 Server   1.最基本,最常用的,测 […]...

  3. 1-STM32+W5500+GPRS物联网开发基础篇-工控板简介 – 杨奉武

    1-STM32+W5500+GPRS物联网开发基础篇-工控板简介 最近这些日子都在忙活STM+W5500+GP […]...

  4. iphone导入照片不显示,不同步怎么整 – cn2022

    iphone导入照片不显示,不同步怎么整 可以借助itools或者爱思助手来处理 进入电脑软件后 找到文件管理 […]...

  5. 如何思索算法(一) – DangerSnake

    如何思索算法(一) 如何思索算法(一)今天在刷网页的时候发现一个求最小公倍数的问题,感觉颇有意思就拿来看,有意 […]...

  6. 【转载】mac os常用软件 – rainduck

    【转载】mac os常用软件 最近准备重新装系统了,,先暂时直接转~等重转好后,再自己整理个列表 小胖的 […]...

  7. 微软认知服务应用秘籍 – 搭建中间层支持跨平台的智能视觉服务

    不断演进的应用场景 初级应用场景—宅在家里 场景:Bob同学有一天在网上看到了一张建筑物的图片,大发感慨:&# […]...

  8. 温控算法的实现:四 – youzi1992

    温控算法的实现:四 时至今日,我终于算是大体上完成了温控的算法,现在就将具体的实现总结如下。 一:matlab […]...

随机推荐

  1. 使用pdf.js开发一个图书在线阅读界面,可以点击书签显示对应的页面,可以全文检索 – fighting、瑞

    使用pdf.js开发一个图书在线阅读界面,可以点击书签显示对应的页面,可以全文检索 客户现场问题:图书pdf文 […]...

  2. 从自带光环到强大商用,这个区块链服务你怕么?

      自中本聪发表“一种点对点的电子现金系统”后,区块链技术渐渐被人们所热议,使区块链自带光环并被称作是继大型机 […]...

  3. Windows下将ISO镜像制作成U盘启动的工具(U盘启动工具/UltraISO/Rufus/Universal-USB)

    说明:基于Windows的U盘启动制作都是非常的简单,在软件上指定ISO文件之后,一般都是选择写入到哪个U盘即 […]...

  4. 触发器的操作

    触发器是用户定义事务命令的集合,当对一个表进行INSERT、UPDATE和DELETE操作时,会自动执行这些命 […]...

  5. 今日北京地区将停止小灵通手机的使用

      11月15日消息,由于本地无线环路业务(即小灵通业务,以下简称小灵通)的设备供应和技术支持等方面的原因,小 […]...

  6. Python openpyxl、pandas操作Excel方法简介与具体实例

      本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl; 其实Py […]...

  7. XV6学习(15)Lab mmap: Mmap

    代码在Github上。 这一个实验是要实现最基础的mmap功能。mmap即内存映射文件,将一个文件直接映射到内 […]...

  8. 用js来实现那些数据结构01(数组篇01-数组的增删)

       在开始正式的内容之前,不得不说说js中的数据类型和数据结构,以及一些比较容易让人混淆的概念。那么为什么要 […]...

展开目录

目录导航