{"name":"数据库","id":"中间件-数据库-数据库","content":"# 数据库系统\n\n## 一、数据库的第一性原理\n\n### 1.1 数据问题的本质\n\n在任何信息系统中，核心问题并不是\"如何存数据\"，而是：\n\n> **如何在时间与规模不断扩大的情况下，可靠、可控、可解释地维护\"状态\"**。\n\n文件系统无法解决以下根本矛盾：\n\n* 状态的**一致性**（多副本、多用户）\n* 状态的**演进性**（更新、回滚、历史）\n* 状态的**可组合性**（查询、关联）\n* 状态的**安全与治理**\n\n数据库系统，正是为了解决\"状态管理的系统性复杂度\"而诞生的。\n\n---\n\n## 二、数据库的四层认知模型（总纲）\n\n数据库的一切复杂性，都可以被收敛到一个稳定的四层抽象模型中：\n\n```\n┌───────────────┐\n│   架构层       │  扩展性 / 并行性 / 可用性\n├───────────────┤\n│   物理层       │  如何高效执行\n├───────────────┤\n│   逻辑层       │  用户如何表达意图\n├───────────────┤\n│   理论层       │  数据如何被形式化\n└───────────────┘\n```\n\n这一模型将全文内容统一到一个稳定坐标系中。\n\n---\n\n## 三、理论层：数据如何被形式化\n\n### 3.1 数据与数据库的抽象\n\n* **数据**：对现实世界对象及其关系的符号化描述\n* **数据库**：长期存在、可共享、受控的数据集合\n* **DBMS**：数据一致性、完整性、并发性与安全性的执行者\n\n### 3.2 数据模型：对现实世界的建模工具\n\n数据模型回答的是：**我们如何\"看待\"世界**。\n\n* 关系模型：世界是表与表之间的关系\n* 实体-联系模型：世界由实体与联系构成\n* 对象模型：世界由对象与行为构成\n* 半结构化模型：世界是松散、异构、演化的\n\n#### 为什么关系模型胜出？\n\n因为它提供了三点关键优势：\n\n1. 数学基础（集合论）\n2. 查询可组合性\n3. 实现与物理存储解耦\n\n---\n\n## 四、逻辑层：用户如何表达意图\n\n### 4.1 三层模式与数据独立性\n\n数据库通过**抽象屏障**来对抗复杂性：\n\n* 物理模式：数据如何存\n* 逻辑模式：数据是什么\n* 用户模式：用户看到什么\n\n这保证了：\n\n> **数据的逻辑结构不应被物理实现所绑架**。\n\n### 4.2 关系代数：查询的逻辑语言\n\n关系代数是一种**可推导、可变换、可优化的查询表示**。\n\n* 选择、投影：过滤与裁剪\n* 连接：关系组合\n* 并、差、交：集合运算\n\nSQL 的本质：\n\n> **并非告诉系统\"怎么做\"，而是声明\"我想要什么\"**。\n\n---\n\n## 五、物理层：查询如何被高效执行\n\n### 5.1 查询处理的基本流程\n\n1. SQL → 关系代数\n2. 关系代数 → 查询执行计划\n3. 执行计划 → 算子流水线\n\n### 5.2 存储管理与文件组织\n\n数据库并不\"相信\"操作系统的默认抽象：\n\n* 定长 / 变长记录\n* 堆文件 / 顺序文件 / 散列文件\n* 聚簇存储\n\n其目标只有一个：\n\n> **最小化磁盘 IO，最大化局部性**。\n\n### 5.3 连接、排序与聚合的实现哲学\n\n* Nested Loop：通用但昂贵\n* Hash Join：以内存换时间\n* Sort-Merge：顺序访问友好\n\n设计取舍的本质：\n\n> **时间、空间与确定性的三角平衡**。\n\n---\n\n## 六、查询优化：从可能性空间中选择最优\n\n### 6.1 查询优化的本质\n\n> **在语义等价的前提下，寻找执行代价最低的路径**。\n\n### 6.2 两类优化思想\n\n* 基于规则：安全但有限\n* 基于代价：复杂但通用\n\n代价模型考虑：\n\n* IO\n* CPU\n* 网络\n\n### 6.3 统计信息与不确定性\n\n优化从来不是精确科学，而是：\n\n> **基于概率的工程决策**。\n\n---\n\n## 七、架构层：数据库如何扩展与演进\n\n### 7.1 从单机到并行\n\n* IO 并行\n* 查询内并行\n* 查询间并行\n\n核心挑战：\n\n* 数据倾斜\n* 资源竞争\n* 同步代价\n\n### 7.2 从集中式到分布式\n\n扩展带来的不是免费午餐，而是：\n\n> **一致性、可用性与性能的再平衡**。\n\n---\n\n## 八、数据库的分化：为什么不再只有关系型\n\n关系数据库解决了\"通用问题\"，但并非所有问题。\n\n| 约束瓶颈      | 架构分化  |\n| --------- | ----- |\n| Schema 刚性 | 文档数据库 |\n| 高并发 KV    | 键值数据库 |\n| 时间序列      | 时序数据库 |\n| 对象映射      | 对象数据库 |\n\n这些系统不是\"更先进\"，而是：\n\n> **在特定维度上放弃通用性，换取极致效率**。\n\n---\n\n## 九、演进视角下的数据库选型方法论\n\n选型不是\"哪个更好\"，而是：\n\n1. 状态规模\n2. 一致性要求\n3. 查询模式\n4. 演进频率\n\n数据库设计，本质是**系统架构设计的一部分**。\n\n## 关联内容（自动生成）\n\n- [/中间件/数据库/数据库优化.md](/中间件/数据库/数据库优化.md) 数据库优化与本文档的查询优化、架构层内容密切相关，提供了性能优化的实践指导\n- [/中间件/数据库/分布式数据库.md](/中间件/数据库/分布式数据库.md) 分布式数据库扩展了本文档中架构层内容，探讨了数据库扩展与演进的具体实现\n- [/中间件/数据库/数据类型.md](/中间件/数据库/数据类型.md) 数据类型是数据库理论层的重要组成部分，与本文档数据模型部分形成补充\n- [/中间件/数据库/数据库系统/事务管理/事务.md](/中间件/数据库/数据库系统/事务管理/事务.md) 事务管理是数据库一致性保证的核心机制，与本文档理论层和物理层内容相关\n- [/中间件/数据库/数据库系统/数据库设计.md](/中间件/数据库/数据库系统/数据库设计.md) 数据库设计与本文档逻辑层内容密切相关，提供了数据建模和设计的实践方法\n- [/中间件/数据库/文档数据库.md](/中间件/数据库/文档数据库.md) 文档数据库是数据库分化的一种具体实现，与本文档第八部分数据库分化内容相关\n- [/中间件/数据库/索引.md](/中间件/数据库/索引.md) 索引是数据库物理层的重要组成部分，与本文档物理层内容密切相关\n- [/中间件/数据库/mysql/查询优化.md](/中间件/数据库/mysql/查询优化.md) 具体数据库的查询优化实践，与本文档查询优化部分形成理论与实践的结合\n- [/数据技术/数据存储.md](/数据技术/数据存储.md) 数据存储技术是数据库物理层的基础，与本文档物理层内容相关\n- [/软件工程/架构/系统设计/高并发.md](/软件工程/架构/系统设计/高并发.md) 高并发系统设计中的数据库优化是数据库架构层内容的具体应用\n","metadata":"tags: ['数据库', '数据结构与算法', '事务管理']\nbook: [\n    {name: '数据库系统概念', chapters: ['第十八章', '第十九章']}\n]","hasMoreCommit":true,"totalCommits":21,"commitList":[{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2025-12-30T17:57:04+08:00","author":"MY","message":"docs(database): 重构数据库文档内容并更新相关图片资源","hash":"7f8107fe61309019e19ad99a3783749ab7873824"},{"date":"2024-09-06T10:24:58+08:00","author":"MY","message":"📦分布式数据库","hash":"d61c39cad569c826d6b6fa3030ed44bbb665838f"},{"date":"2024-08-05T20:05:16+08:00","author":"MY","message":"✏分布式数据库","hash":"afa69aaaebfad46982092579e044460729e56061"},{"date":"2024-04-07T20:13:06+08:00","author":"MY","message":"✏数据库","hash":"b70250450dbf97a0ac40b13beeb18faa45a81baf"},{"date":"2024-04-02T18:43:36+08:00","author":"MY","message":"✏数据库","hash":"b5ca237b4d2ce050f4dd0918af4cb0be969b0b02"},{"date":"2023-07-31T21:02:09+08:00","author":"MY","message":"➕数据仓库","hash":"f9747e3bce8605c17f75c9fb7216ca3a8f02907b"},{"date":"2023-05-17T20:44:25+08:00","author":"MY","message":"✏️数据库","hash":"8f34790e734de6884420514dd64e3f0f29e7c08d"},{"date":"2023-05-10T21:24:25+08:00","author":"MY","message":"✏️分布式","hash":"9b8cb9880ad360665d9fa2a4b4b8a77c9ae6a834"},{"date":"2023-05-09T20:58:53+08:00","author":"MY","message":"✏️数据库","hash":"697a6f0d8885ae6432f3532ab4bc5fddac00fc7b"}],"createTime":"2020-07-29T16:41:48+08:00"}