关系型数据库和文档型数据库是两个不同的建模视角。在关系型数据库内,又分为关系和维度两个视角。而文档型数据库主要面向查询,总结下来建模的三个视角是关系、维度和查询。本文将介绍文档型数据库建模视角的由来与内容。
关系型数据库源自Ted Codd在1969年至1974年间的开创性论文,其核心思想是在物理层面以表为单位存储数据,每个表包含属性,通过主键和外键约束强制表之间的关系。关系型数据库获得超过半个世纪成功的原因之一,在于其能够通过执行规则来维护高质量数据,确保数据完整性。其次,关系型数据库通过高效利用CPU,在存储数据、减少冗余和节省存储空间方面表现出色。然而,近年来随着磁盘成本的下降和CPU性能的相对稳定,节省空间的优势逐渐减弱,这为文档型数据库数据库,特别是文档型数据库的崛起创造了机会。
文档型数据库,是一种“非关系型数据库”,采用与关系型数据库不同的数据存储方式。关系型数据库以表(集合)的形式存储数据,通过主键和外键驱动数据完整性和导航。相反,文档型数据库以多种形式存储数据,例如:「巨杉文档型数据库」以及MongoDB均以JSON及BSON格式存储数据,其他文档型数据库产品可能使用RDF三元组或XML。
关系、维度和查询可以存在于这三个模型级别,共同形成九种不同类型的建模视角(如表1所示)。在业务建模的过程中,我们首先对齐通用业务语言,然后细化业务需求,最终进行数据库设计。例如,在为保险公司的理赔申请进行建模时,我们可能需要创建一个模型以收集业务规则,使用BTM收集业务词汇,LDM收集详细业务需求,PDM进行数据库设计。
关系型数据库 | 文档型数据库 | ||
关系 | 维度 | 查询 | |
业务术语 (对齐) | 术语和规则 | 术语和路径 | 术语和查询 |
逻辑 (细化) | 集合 | 度量和上下文 | 按层级查询 |
物理 (设计) | 扩展或折中后的集合 | 星型模式或雪花模式 | 增强的层次结构查询 |
表1: 九种不同类型的建模视角
这种方法通过对齐、细化和设计的三个层次,使我们能够更有效地建模业务需求,并在关系型数据库的:关系、维度,以及文档型数据库的查询模型之间,选择适当的模型类型。
关系型数据库 | 文档型数据库 | ||
因素 | 关系 | 维度 | 查询 |
优势 | 通过集合精确表示数据 | 精确表示数据如何用于分析 | 精确表示将如何接收和访问数据 |
重点 | 精确表示将如何接收和访问数据 | 分析业务流程的业务问题 | 提供业务流程洞察的访问路径 |
用例 | 运营(OLTP) | 分析(OLAP) | 发现 |
父视角 | RDBMS | RDBMS | NoSQL |
例子 | 客户必须拥有至少一个账户。 | 通过日期、区域和产品产生了多少收入?也想按月和年查看... | 哪些客户的支票账户今年产生了超过10,000美元的费用,该客户还拥有至少一只猫,并住在纽约市500英里范围内? |
表 2:关系型、维度型和查询型的比较
总结
文档型数据库以其独特的建模视角,为企业数据管理带来了新的思路和解决方案。关系、维度和查询三个视角的结合,使得文档型数据库在处理不断变化的业务需求、灵活适应数据模型变化、以及提供高效的查询操作等方面展现出独特的优势。
往期阅读:
文档型数据库解读6:文档型数据库建模过程--对齐、细化、设计
文档型数据库解读5:文档型数据库模型组件——实体、关系、属性与主键




