数据库内核入门-01 - 开篇
· 4 min read
简述
这是数据库内核入门系列的第一篇文章。 由于水平有限,文章可能会有错误,欢迎指正。
注:由于时代发展的需要,数据库已经衍生出针对多种应用场景的数据库系统,如关系型数据库、非关系型数据库、图数据库等。本文将主要介绍关系型数据库内核的实现。
基本概念
数据(Data) 是描述事物的符号记录,是信息的载体。
数据库(Database) 是按照特定数据结构组织、存储和管理数据的仓库。
数据库管理系统(Database Management System) 是用于创建、管理和维护数据库的软件。
数据库内核(Database Kernel) 是数据库管理系统的核心组件,负责处理数据库的创建、管理和维护。
数据库内核要完成的功能
在现实生活或者生产环境中,我们难以避免的产生各类数据,受面向对象的思想浸染,我们反过来也可以将人脑看作是一个数据库管理系统,它负责管理这些数据。可遗憾的是,人在进化中最显著的特点就是遗忘,我们很难记住所有的数据,因此我们需要一个数据库管理系统来帮助我们管理这些数据,以便在需要的时候可以快速的找到我们需要的数据。
这便是缘起,即有了需要解决的问题,便有了数据库管理系统要完成的功能;但为什么是数据库管理系统而不是文件系统? 可以简单的从下面表格中看出区别:
特性 | 文件系统 | 数据库 |
---|---|---|
数据共享 | ❌ 困难 | ✅ 容易 |
数据一致性 | ❌ 难保证 | ✅ 有约束机制 |
并发控制 | ❌ 无 | ✅ 有锁机制 |
事务支持 | ❌ 无 | ✅ ACID特性 |
数据恢复 | ❌ 困难 | ✅ 有备份恢复 |
查询效率 | ❌ 低 | ✅ 有索引优化 |
数据库管理系统的主要功能
- 数据定义
- 数据操纵
- 数据组织、存储、查询
数据库管理系统架构
数据库管理系统通常采用分层架构设计,每一层都有特定的职责和功能。下面是一个典型的数据库管理系统架构图:
各层详细说明
应用层
- 客户端应用:用户程序,通过标准接口(如JDBC、ODBC)与数据库交互
- 连接池:管理数据库连接,提高连接复用率
接口层
- SQL解析器:将SQL语句解析为内部表示形式
- 查询优化器:生成最优的查询执行计划
- 执行引擎:执行查询计划,协调各个组件
逻辑层
- 事务管理器:保证ACID特性,管理事务的开始、提交和回滚
- 锁管理器:实现并发控制,防止数据竞争
- 缓冲池管理器:管理内存中的数据页,减少磁盘I/O
物理层
- 日志管理器:记录所有数据变更,支持恢复和回滚
- 存储引擎:负责数据的物理存储和检索
- 索引管理器:维护各种索引结构,加速查询
存储层
- 数据文件:存储实际的表数据
- 索引文件:存储索引数据结构
- 日志文件:存储事务日志和恢复信息