数据建模:第1部分 —— 目标和方法论
作者:Riccardo Tommasini / 用例
2023年3月8日
导航到
本文最初发布在The New Stack,在此处获得许可后重发。
在不同的技术中,实体和关系始终处于核心地位。然而,根据业务目标,它们的性质和角色被重新解释。
数据建模是定义和表示系统中数据元素的过程,以便传达数据点和结构之间的联系。在Martin Kleppmann的具有影响力的著作《设计数据密集型应用》中,他将数据建模描述为开发任何信息系统最关键的一步。
理解哪些数据对业务相关,以及它们以何种形式存在,需要职能和技术人员之间的沟通。此外,允许信息系统内组件之间的数据共享对于系统的良好运行至关重要。引用Kleppmann的话,“数据模型的影响不仅在于软件的编写方式,还在于我们思考我们正在解决的问题的方式。”
那么,数据模型究竟是什么?
数据模型是一种规范,描述了系统中存储数据的结构。
此外,它可能定义了确保数据完整性的约束,并标准化了表示(规则)、存储(格式)或共享(协议)数据的方式。在文献中,我们通常区分三个不同层次的数据建模(参见金字塔图)
- 概念层定义了系统包含的内容。业务利益相关者通常创建概念模型。其目的是组织、范围和定义业务概念和规则。在此层,定义最为重要,例如产品。
- 逻辑层定义了数据库管理系统(DBMS)应该如何实现。逻辑模型具有技术偏见,其目的是创建规则和数据结构的技术图。关系和属性变得可见,例如,产品名称和价格。
- 物理层描述了如何使用特定技术来实现信息系统。物理模型是为了实现数据库而创建的。物理层探讨了数据结构和算法方面的权衡。
在InfluxDB大学的基础Flux培训课程中,我们使用了相同层次来理解时序数据如何映射到Flux数据结构和InfluxDB的行协议数据模型。在这里,我们进一步探讨InfluxDB和Flux的数据建模。因此,值得回忆的是
- 在概念上,时序是一组由一个——而且是唯一一个——测量值和一系列标签描述的有序时间戳数据点。
- 在逻辑上,Flux同时表示多个系列,通过一系列名为字段的关键值对来表示不同的值。此外,标签是帮助进一步分区数据以进行处理的键值对。
- 从物理层面来看,InfluxDB 将数据存储到时间结构化合并树中;值得一提的是,标签既是键也是值索引。
数据建模方法的历史简述
现在我们已经明确了数据模型是什么以及数据建模的目标,我们可以讨论如何实现这些目标。在实践中,文献中存在几种方法论。以下列出了一些最突出的方法,它们在目标信息系统和工作负载方面有所不同,例如:在线事务处理(OLTP)和数据库管理系统(DBMS);在线分析处理(OLAP)和数据仓库;以及大数据和数据湖。
- 关系建模(RM)侧重于为涵盖整个企业业务的模型去除冗余信息。RM 使用关系(表)来描述领域实体及其关系。
- 维度建模(DM)侧重于在处理大型和复杂(分析)查询时保持高性能的同时,实现完整的需求分析。DM 旨在优化数据访问,因此它专为 OLAP 设计。星型模型和雪花模型是维度建模的显著成果。
值得注意的是,RM 和 DM 在上述逻辑和物理抽象级别上会产生显著不同的结果。尽管如此,它们在概念层面上操作时都具有相似的概念化和工具。实际上,实体-关系(ER)建模技术和上述所有模型以及图数据库或语义存储的基础。因此,重新了解 ER 的含义是值得的。
- 实体是一个存在且与其他对象可区分的对象。实体具有类型和描述性属性;实体集将相同类型的实体分组在一起。一个称为主键的属性唯一地标识集合中的每个实体。
- 关系是多个实体之间的关联。关系的基数描述了另一个实体可以关联的实体数量;我们考虑一对一、一对多和多对一。
在不同的技术中,实体和关系始终是核心。然而,它们的性质和角色根据业务目标进行重新解释。例如,RM 强调尽可能多地识别实体以避免数据冗余。实际上,冗余会随着时间的推移产生维护问题,这与用户对一致性的需求相悖。
相反,DM 围绕借用其身份的实体构建,这些实体使用其多对多关系。这些实体被解释为维度,例如,提供事实背景的描述性信息。DM 主要对数据仓库用户感兴趣,他们的主要关注点是分析。上述建模技术在一定程度上都可以表示时间。
- 在关系建模中,时间只是一个属性。实体和关系可以更新,但概念模式在此级别上不携带信息。已经提出了关系建模方法的时间扩展。然而,它们是为时态数据库量身定制的,时态数据库关注其实体的时态有效性(作为一种一致性形式),而不是时间序列数据库(TSDB)及其时间变化属性的记录。
- 在维度建模中,时间被视为分析维度——它代表了一个可能的切片主题,产生了重要的聚合。维度模型中的维度表不考虑概念级别上的变化。然而,在较低级别,可能会发生变化。已经提出了处理这种“缓慢变化维度”的不同方法,包括跟踪其历史记录,这与 TSDB 做的事情非常相似。