首页 > 其他分享 >读数据工程之道:设计和构建健壮的数据系统26数据建模

读数据工程之道:设计和构建健壮的数据系统26数据建模

时间:2024-11-03 08:50:59浏览次数:4  
标签:26 4.3 4.2 建模 读数据 3.6 3.2 数据系统 数据

1. 数据建模

1.1. 良好的数据架构必须反映出使用这些数据的组织的业务目标和业务逻辑

1.2. 数据湖1.0、NoSQL和大数据系统的兴起,使工程师们有时是为了合理的性能提升去忽略传统的数据建模

1.3. 数据在企业中的地位急剧上升,人们越来越认识到,建模对于实现数据科学需求层次金字塔中更高层次的价值至关重要

2. 数据模型

2.1. 数据模型代表了数据与现实世界的联系方式

2.2. 反映了数据需要如何结构化和标准化才能最好地反映你的组织的流程、定义、工作流和逻辑

2.3. 一些数据专家认为数据建模是乏味的,是“大企业”才会做的事情

2.4. 对数据进行建模的关键是要关注如何将模型转化为业务成果

  • 2.4.1. 一个好的数据模型要关联到商业决策的影响

  • 2.4.2. 一个好的数据模型包含前后一致的定义

2.5. 数据建模的思想就是从抽象的建模概念移动到具体的实现

2.6. 主要的数据模型

  • 2.6.1. 概念模型

    • 2.6.1.1. 包含业务逻辑和规则,描述系统的数据,如模式、表和字段(名称和类型)​

    • 2.6.1.2. 使用实体关系(Entity-Relationship,ER)图中对其进行可视化通常是有帮助的,实体关系图是一个用于可视化数据中各种实体(订单、客户、产品等)之间的关系的标准工具

  • 2.6.2. 逻辑模型

    • 2.6.2.1. 通过添加更多的细节来详细说明概念模型在实践中如何实现
  • 2.6.3. 物理模型

    • 2.6.3.1. 定义了逻辑模型如何在数据库系统中实现

    • 2.6.3.2. 将为逻辑模型添加具体的数据库、模式和表,包括配置细节

2.7. 成功的数据建模在过程的开始阶段就引入业务利益相关者

  • 2.7.1. 数据建模应该是一项全接触式的活动,目标是为企业提供高质量的数据,最终获得可操作的洞见和智能自动化

2.8. 数据建模的另一个重要考虑因素是数据的粒度,也就是数据的存储和查询的最小单元

  • 2.8.1. 粒度通常位于表中的主键的层级(如客户ID、订单ID和产品ID)​,它通常伴随着一个日期或时间戳以提精确性

2.9. 应该努力将你的数据建模维持在尽可能低的粒度层级

  • 2.9.1. 很容易对这个高度细化的数据集做汇总

  • 2.9.2. 反之则不然,通常也不可能从汇总的数据还原回明细

3. 范式化

3.1. 范式化是一种对数据库中的表和列的关系进行严格控制的数据建模实践

3.2. 范式化的目标是消除数据库中的冗余数据,并确保参照完整性

3.3. 是在数据库中实践“不要重复自己”(Don't Repeat Yourself,DRY)的原则

3.4. 由关系数据库的先驱Edgar Codd在20世纪70年代初首次提出的

3.5. 四个主要目标

  • 3.5.1. 把关系集合从不合适的插入、更新和删除依赖中解放出来

  • 3.5.2. 当新的数据类型被引入时,尽可能减少关系集合的重组,从而增加应用程序的寿命

  • 3.5.3. 使得关系模型对用户来说更有信息价值

  • 3.5.4. 使得关系集合对于查询统计是中立的,这些统计可能会随着时间的推移而改变

3.6. 范式是有顺序的,每个范式都包含了之前范式的条件

  • 3.6.1. 无范式

    • 3.6.1.1. 没有范式化

    • 3.6.1.2. 允许嵌套和冗余的数据

  • 3.6.2. 第一范式(First Normal Form, 1NF)

    • 3.6.2.1. 每一列都是唯一的,有一个单一的值

    • 3.6.2.2. 该表有一个唯一主键

      3.6.2.2.1. 唯一主键是一个单一的字段或多个字段的组合,它唯一地确定了表中的行

      3.6.2.2.2. 每个键值最多出现一次,否则一个值会映射到表中的多条记录

  • 3.6.3. 第二范式(Second Normal Form, 2NF)

    • 3.6.3.1. 满足第一范式的要求,并移除部分依赖

      3.6.3.1.1. 部分依赖是指完全由唯一主键(复合键)中的一个子集决定的非键列

      3.6.3.1.2. 部分依赖只有在主键是复合键时才会出现

      3.6.3.1.3. 当复合键中的一个字段子集可以用来确定表中的一个非键列时,就会出现部分依赖

  • 3.6.4. 第三范式(Third Normal Form, 3NF)

    • 3.6.4.1. 满足第二范式的要求,再加上每个表只包含与其主键相关的字段,并且没有传递依赖

    • 3.6.4.2. 当一个非键字段依赖于另一个非键字段时,就会出现传递依赖

3.7. 尽管去范式化看起来像是一种反模式,但它在许多存储半结构化数据的OLAP系统中很常见

4. 建模技术

4.1. 星型模式

  • 4.1.1. 在数据集市中对数据进行建模的另一个流行方式是星型模式,理论上任何访问方便简单的数据模型也都是满足要求的

  • 4.1.2. 代表了企业的数据模型

  • 4.1.3. 与高度范式化的数据建模方法不同,星型模式是被必要维度包围的事实表

    • 4.1.3.1. 使得星型模式需要比其他数据模型更少的连接操作,从而加快了查询性能
  • 4.1.4. 星型模式的另一个优点是它可以更容易被业务用户理解和使用

4.2. Inmon

  • 4.2.1. 数据仓库之父Bill Inmon在1989年提出了他的数据建模方法

  • 4.2.2. 在数据仓库之前,分析往往直接发生在源系统内部,其明显的副作用是长时查询造成了生产环境事务数据库的性能问题

  • 4.2.3. 数据仓库的目标是将源系统与分析系统分离

  • 4.2.4. 数据仓库的四个关键部分

    • 4.2.4.1. 面向主题的

      4.2.4.1.1. 数据仓库专注于一个特定的主题域

    • 4.2.4.2. 集成的

      4.2.4.2.1. 来自不同数据源的数据会被整合并范式化

    • 4.2.4.3. 非易失的

      4.2.4.3.1. 数据存储在数据仓库后保持不变

    • 4.2.4.4. 反映历史变化的

      4.2.4.4.1. 不同的时间范围的数据都可以被查询到

  • 4.2.5. 在Inmon数据仓库,整个组织的数据都被整合到一个细粒度、高度范式化的并且注重ETL的实体关系模型中

  • 4.2.6. 数据从优先级最高的业务领域开始被逐步引入

4.3. Kimball模型

  • 4.3.1. 由Ralph Kimball在20世纪90年代初创建,这种数据建模方法不太注重范式化,在某些情况下还接受去范式化

  • 4.3.2. Kimball方法有效地使数据集市成为数据仓库本身

    • 4.3.2.1. 这也会使迭代和建模的速度比Inmon更快,但代价是潜在的更松散的数据集成、数据冗余和重复
  • 4.3.3. 数据被建模为两种类型的表:事实和维度

    • 4.3.3.1. 事实表

      4.3.3.1.1. 可以把事实表看作一个数字表

      4.3.3.1.2. 星型模式中的第一种表是事实表,它包含了事实的、定量的和与事件相关的数据

      4.3.3.1.3. 事实表中的数据是不可改变的,因为事实与事件有关

      4.3.3.1.3.1. 事实表只能做追加而不会被更新

      4.3.3.1.4. 事实表通常又窄又长,意味着它们没有很多列,但有很多代表事件的行

      4.3.3.1.5. 事实表应该是尽可能细粒度的

    • 4.3.3.2. 维度表B

      4.3.3.2.1. 维度表则是引用事实的定性数据

      4.3.3.2.2. 维度表以一种叫作星型模式的关系围绕着一个事实表

      4.3.3.2.3. 维度表为存储在事实表中的事件提供参考数据、属性和关系上下文

      4.3.3.2.4. 维度表比事实表小(形状相反)​,通常是宽而短

      4.3.3.2.5. 缓慢变化维度表(Slowly Changing Dimension,SCD)

      4.3.3.2.5.1. 第一类

4.3.3.2.5.1.1. 覆盖现有的维度记录

4.3.3.2.5.1.2. 很简单的但是这意味着你无法访问被删除的历史维度记录

4.3.3.2.5.1.3. 是大多数数据仓库的默认行为

  >   4.3.3.2.5.2. 第二类

4.3.3.2.5.2.1. 保留完整的历史维度记录

4.3.3.2.5.2.2. 是我们在实践中最常看到的一种

  >   4.3.3.2.5.3. 第三类

4.3.3.2.5.3.1. 第三类缓慢变化维度与第二类相似,但是在第三类中不是创建一个新行,而是创建一个新的字段

  • 4.3.4. Kimball方法允许冗余数据的存在,但是要避免复制相同的维度表,以避免业务定义和数据完整性的漂移

  • 4.3.5. 只适合于批处理数据而不适合于流处理数据

4.4. Data Vault模型

  • 4.4.1. Kimball和Inmon专注于数据仓库中的业务逻辑结构,而Data Vault则提供了一种不同的数据建模方法

  • 4.4.2. 由Dan Linstedt在20世纪90年代创建的Data Vault方法将源系统数据的结构与属性分离

  • 4.4.3. Data Vault不是用事实、维度或高度范式化的表来表示业务逻辑,而是简单地将数据从源系统直接加载到少数几个特制的表中,只需插入即可

  • 4.4.4. 目标是使数据尽可能地与业务保持一致,甚至在业务数据的演进过程中

  • 4.4.5. 三种主要类型的表组成:中心表、链接表和卫星表

    • 4.4.5.1. 中心表存储业务主键

      4.4.5.1.1. 查询通常涉及通过业务主键进行搜索

    • 4.4.5.2. 链接表维护业务主键之间的关系

      4.4.5.2.1. 跟踪中心表之间的业务主键的关系

      4.4.5.2.2. 最好以最细的粒度来连接中心表

    • 4.4.5.3. 卫星表表示业务主键的属性和上下文

      4.4.5.3.1. 卫星表中唯一需要的字段是一个由父级中心表的业务键组成的主键和一个加载日期

      4.4.5.3.2. 一个卫星表可以包含多个有意义的属性

  • 4.4.6. 用户将查询中心表,它将链接到一个包含查询的相关属性的卫星表

4.5. 去范式化的宽表

  • 4.5.1. 云计算的普及意味着存储是非常便宜的

    • 4.5.1.1. 存储数据的成本已经低到不值得花时间去寻找最省空间的方式
  • 4.5.2. 嵌套数据(JSON和类似的)的流行意味着模式在源和分析系统中是灵活的

  • 4.5.3. 宽表就像它听起来那样,是一个常在列式数据库中创建的、高度去范式化的、包含许多字段的集合

    • 4.5.3.1. 一个宽表有可能有成千上万个列,而关系数据库中的表通常少于100列

    • 4.5.3.2. 宽表一般是通过模式演化产生的,工程师随着时间的推移逐渐增加字段

  • 4.5.4. 对宽表的分析查询往往比对需要许多连接的高度范式化的数据运行得快

  • 4.5.5. 宽表包含了你在一个更严格的建模方法中加入的所有数据,且事实和维度在同一张表

5. 流数据的建模

5.1. 由于流数据的无界性和连续性,将Kimball这样的批处理技术转化为流范式是很困难的,甚至是不可能的

5.2. 存在两种主要类型的流:事件流和变更数据捕获

5.3. 建议预测源数据的变化,并保持一个灵活的模式

标签:26,4.3,4.2,建模,读数据,3.6,3.2,数据系统,数据
From: https://www.cnblogs.com/lying7/p/18522499

相关文章

  • 基于51单片机温湿度采集数码管手机app显示+源代码程序+proteus仿真+dht11温湿度传感器
    一、设计简介本项目是简单的物联网(IoT)应用,使用51单片机STC89C52与温湿度传感器DHT11相结合,测量温湿度数据显示在八位数码管,同时通过WiFi模块ESP8266(ESP-01S)将测得的温湿度数据发送到手机APP上,而手机APP则使用AppInventor进行开发。二、功能设计1、数码管实时显示当前温湿度......
  • 阿里国际2025届校园招聘 0826算法岗笔试
    目录1.第一题2.第二题3.第三题⏰时间:2024/08/26......
  • 今日力扣:3226. 使两个整数相等的位更改次数 python3解法
    给你两个正整数 n 和 k。你可以选择 n 的 二进制表示 中任意一个值为1的位,并将其改为0。返回使得 n 等于 k 所需要的更改次数。如果无法实现,返回-1。示例1:输入: n=13,k=4输出: 2解释:最初,n 和 k 的二进制表示分别为 n=(1101)2 和 k=(010......
  • [LeetCode] 3226. Number of Bit Changes to Make Two Integers Equal
    Youaregiventwopositiveintegersnandk.Youcanchooseanybitinthebinaryrepresentationofnthatisequalto1andchangeitto0.Returnthenumberofchangesneededtomakenequaltok.Ifitisimpossible,return-1.Example1:Input:n=13......
  • 读数据工程之道:设计和构建健壮的数据系统25查询
    1. 查询1.1. 通过理解查询、建模和转换​,你会掌握将原始数据转化为下游利益相关者可用数据的工具1.2. 被很多人熟知的SQL,这是最流行和通用的查询语言1.3. 查询是数据工程、数据科学和数据分析的基础1.4. 在了解数据转换的基本模式和技术之前,你需要了解什么是查询、它如......
  • ssm026校园美食交流系统+vue(论文+源码)_kaic
     毕业论文题目  校园美食交流系统院   系:                   专   业:                    学   号:                    姓   名:                    指导老师......
  • ARCore与Unity集成开发教程_2024-07-25_21-26-46.Tex
    ARCore与Unity集成开发教程ARCore简介ARCore功能概述ARCore是Google开发的增强现实(AR)平台,旨在为移动设备提供高精度的AR体验。它通过以下核心功能实现这一点:运动追踪:ARCore能够感知设备的移动,并在虚拟和现实世界之间保持稳定的定位,即使在设备移动时也能保持虚拟对象......
  • CF2026 (Educational round 171) vp记录
    EducationalCodeforcesRound171vp记录A.PerpendicularSegments4min+0唐题。一眼限制紧的边必然连对角线,因为最小长度的限制是相同的所以另一条边也连对角线即可。B.BlackCells9min+0唐题。显然最优策略是相邻的点匹配,$n$为奇数的情况有一个孤立点随便连,为......
  • ESP8266 连接 MQTT 服务器EMQX 连接MQTTX
    目录1.先用有一台自己的云服务器2. 使用FinalShell连接阿里云云服务器ECS3.安装宝塔4.在云服务器打开8888端口5.使用外网面板地址打开宝塔面板6.安装Docker7.下载emqx8.打开emqxWeb界面9.下载MQTTX10.EMQX加一个客户端11.开始通信12.加入单片机ESP82661.先......