什么是数据建模?
数据建模(数据建模)是为要存储在数据库中的数据创建数据模型的过程。数据建模有助于可视化地表示数据,并在数据上执行业务规则。数据模型可确保命名约定,默认值,语义,安全性方面的一致性,同时还能确保数据质量。
数据模型技术分两类(本文主要面向ER模型):
- 实体关系(ER)模型: 它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。
- UML(统一建模语言):是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,独立于任何具体程序设计语言。
为什么要使用数据模型?
使用数据模型的主要目标是:
- 确保正确表示数据库所需的所有数据对象。
- 数据模型有助于在概念,物理和逻辑级别上设计数据库。
- 数据模型结构有助于定义关系表,主键和外键以及存储过程。
- 数据库开发人员可以使用它来创建物理数据库。
- 识别丢失和冗余的数据。
- 建模初期既费力又费时,但从长远来看,在IT基础架构升级和维护成本上会更低,更快。
主要有三种不同类型的数据模型:
- 概念:目的是组织,范围和定义业务概念和规则。
- 逻辑:目的是定义开发规则和数据结构。
- 物理的:该模型通常由DBA和开发人员创建。
概念模型
该模型的主要目的是建立实体,它们的属性及其关系。在此数据建模级别中,几乎没有可用的实际数据库结构详细信息。
概念数据模型的特征:
- 提供整个组织范围内的业务概念。
- 这种类型的数据模型是为业务受众设计和开发的。
- 概念模型的开发独立于硬件规范(如数据存储容量,位置)或软件规范(如DBMS供应商和技术)。重点是代表用户在“现实世界”中看到的数据。
逻辑数据模型
逻辑数据模型为概念模型元素添加了更多信息。它定义了数据元素的结构并设置了它们之间的关系。
逻辑数据模型的优点是为形成物理模型提供基础。但是,建模结构仍然是通用的。
逻辑数据模型的特征:
- 描述单个项目的数据需求,但可以根据项目范围与其他逻辑数据模型集成。
- 独立于DBMS设计和开发。
- 数据属性将具有精确度和长度的数据类型。
- 模型的标准化过程通常应用到3NF(第三范式)
物理数据模型
物理数据模型描述了数据库中数据模型的特定实现。它提供了数据库的抽象,并有助于生成架构。这是由于物理数据模型提供的元数据的丰富性。
这种类型的数据模型还有助于可视化数据库结构。它有助于对数据库列键,约束,索引,触发器和其他DBMS功能进行建模。
物理数据模型的特征:
- 数据模型包含表之间的关系,这些关系解决关系的基数和可空性。
- 专为要在项目中使用的特定版本的DBMS,位置,数据存储或技术而开发。
- 具有确切的数据类型,分配的长度和默认值。
- 定义了主键和外键,视图,索引,访问配置文件和授权等。
数据模型的优点:
- 设计数据模型的主要目标是确保功能团队提供的数据对象能够准确表示。
- 数据模型应足够详细,可用于构建物理数据库。
- 数据模型中的信息可用于定义表,主键和外键以及存储过程之间的关系。
- 数据模型可帮助企业在组织内部和组织之间进行沟通。
- 帮助识别正确的数据源以填充模型
案例描述1:
背景描述:
某物联网公司的核心数据库中出现59000多个字段类型不一致的问题(不同表中字段名称相同,字段类型或者字段长度不同),从而增加了数据库日常维护的难度,同时也牺牲了系统中某些业务的性能。
现状如何解决:
根据业务的重要性、表的大小分批修改字段类型。(需要制定实施方案、预留实施窗口、测试、值守、上线等一系列操作)
现状如何避免:
可以在逻辑建模阶段通过Domain技术来统⼀数据库系统中具有相同数据类型的属性,同时在对字段类型做变更操作时,可以⾃动对应到相关的所有字段。
案例描述2:
在对某物联网公司核心数据库的优化和日常巡检中发现无索引的表有100多个、无主键的表有200多个,从而引发了较多的核心业务的SQL语句性能低下,降低了最终用户的使用感受。
复制
现状如何解决:
挨个梳理核心表、核心业务相关的SQL,根据业务的重要性按需分批建立主键和索引。(需要制定实施方案、SPA测试、应用测试、上线值守等操作)
现状如何避免:
需要在物理建模阶段充分了解系统的软硬件环境和在物理建模阶段可以使用到的相关技术(反规范化、约束、索引、分区、视图等)来提高系统的可扩展性、减少不必要的调整和维护。
如何将数据建模技术切入到客户现有的系统中?
1:从客户的性能问题出发
-了解系统特征
-了解系统的软硬件
-了解系统的瓶颈
2:从物理模型⾃下⽽上分析(已经上线使⽤的业务功能)
-通过工具的反向工程⽣成完整的数据库物理模型
3:关注核⼼业务的SQL性能
⽬的:通过扫描数据库⽇常的查询,获取表和表的关联关系。
4:数据治理
⽬的:根据模型信息,帮助客户梳理数据冗余存储,数据关联依赖甚⾄是数据质量
如何实现:通过系统的逻辑模型和表的管控相结合的⽅法来明确系统中数据的⽣命周期