数据库系统

一、数据库的第一性原理

1.1 数据问题的本质

在任何信息系统中,核心问题并不是"如何存数据",而是:

如何在时间与规模不断扩大的情况下,可靠、可控、可解释地维护"状态"

文件系统无法解决以下根本矛盾:

数据库系统,正是为了解决"状态管理的系统性复杂度"而诞生的。


二、数据库的四层认知模型(总纲)

数据库的一切复杂性,都可以被收敛到一个稳定的四层抽象模型中:

┌───────────────┐│   架构层       │  扩展性 / 并行性 / 可用性├───────────────┤│   物理层       │  如何高效执行├───────────────┤│   逻辑层       │  用户如何表达意图├───────────────┤│   理论层       │  数据如何被形式化└───────────────┘

这一模型将全文内容统一到一个稳定坐标系中。


三、理论层:数据如何被形式化

3.1 数据与数据库的抽象

3.2 数据模型:对现实世界的建模工具

数据模型回答的是:我们如何"看待"世界

为什么关系模型胜出?

因为它提供了三点关键优势:

  1. 数学基础(集合论)
  2. 查询可组合性
  3. 实现与物理存储解耦

四、逻辑层:用户如何表达意图

4.1 三层模式与数据独立性

数据库通过抽象屏障来对抗复杂性:

这保证了:

数据的逻辑结构不应被物理实现所绑架

4.2 关系代数:查询的逻辑语言

关系代数是一种可推导、可变换、可优化的查询表示

SQL 的本质:

并非告诉系统"怎么做",而是声明"我想要什么"


五、物理层:查询如何被高效执行

5.1 查询处理的基本流程

  1. SQL → 关系代数
  2. 关系代数 → 查询执行计划
  3. 执行计划 → 算子流水线

5.2 存储管理与文件组织

数据库并不"相信"操作系统的默认抽象:

其目标只有一个:

最小化磁盘 IO,最大化局部性

5.3 连接、排序与聚合的实现哲学

设计取舍的本质:

时间、空间与确定性的三角平衡


六、查询优化:从可能性空间中选择最优

6.1 查询优化的本质

在语义等价的前提下,寻找执行代价最低的路径

6.2 两类优化思想

代价模型考虑:

6.3 统计信息与不确定性

优化从来不是精确科学,而是:

基于概率的工程决策


七、架构层:数据库如何扩展与演进

7.1 从单机到并行

核心挑战:

7.2 从集中式到分布式

扩展带来的不是免费午餐,而是:

一致性、可用性与性能的再平衡


八、数据库的分化:为什么不再只有关系型

关系数据库解决了"通用问题",但并非所有问题。

约束瓶颈架构分化
Schema 刚性文档数据库
高并发 KV键值数据库
时间序列时序数据库
对象映射对象数据库

这些系统不是"更先进",而是:

在特定维度上放弃通用性,换取极致效率


九、演进视角下的数据库选型方法论

选型不是"哪个更好",而是:

  1. 状态规模
  2. 一致性要求
  3. 查询模式
  4. 演进频率

数据库设计,本质是系统架构设计的一部分

关联内容(自动生成)