数据库内核入门-01 - 开篇
简述
这是数据库内核入门系列的第一篇文章。 由于水平有限,文章可能会有错误,欢迎指正。
注:根据时代发展的需要,数据库已经衍生出针对多种应用场景的数据库系统,如关系型数据库、非关系型数据库、图数据库等。本文将主要介绍关系型数据库内核的实现。
基本概念
数据(Data) 是描述事物的符号记录,是信息的载体。
数据库(Database) 是按照特定数据结构组织、存储和管理数据的仓库。
数据库管理系统(Database Management System) 是用于创建、管理和维护数据库的软件。
数据库内核(Database Kernel) 是数据库管理系统的核心组件,负责处理数据库的创建、管理和维护。
数据库简介
数据库
首先来思考库房这个概念,在这里,我故意避开仓库这个名词,原因是数据仓库和数据库的概念并不相同。 库房的作用是对于货物存储-提取;如果将数据看成是这样的货物,那么数据库则是这样的库房; 数据库是管理数据的基础设施,它为上层应用程序提供存储和读取数据的服务。如微信的联系人信息、学校的学生信息管理系统等,都是使用数据库来存储信息。
数据模型
继续上面库房的思路,可以延伸下,在现实中库房内部有着不同的构造,如货架之类的来指导人们将货物怎样进行摆放,那么既然将数据库比作现实中的库房,那么数据库在存放数据时,也应当有一定的结构;这就是数数据模型,数据库结构的基础时数据模型。数据模型可以被划分为以下四类:
- 关系模型(relational model)。关系模型用表的集合来表示数据和数据之间的关系。
- 实体-联系模型(entity-relationship model)。用"实体、属性、联系"三要素来描述现实世界数据结构的可视化建模方法。
- 基于对象的数据模型(object-based data model)。实体-联系(ER)模型增加了封装、方法、函数和对象标识等概念的扩展。
- 半结构化数据模型(semistructured data model)。允许相同类型的数据项含有不同的属性集的数据定义。如
XML、JSON等。
数据库管理系统
数据库管理系统(Database-Management System, DBMS),用通俗的话来讲就是管理数据库并提供操作程序的一组软件。下图为数据库管理系统在宏观上的结构:
数据库内核要完成的功能
数据库内核本质上要解决如何高效、可靠的管理海量数据的问题。具体而言:
- 数据持久化与可靠性问题
- 并发访问控制问题
- 查询性能优化问题
- 事务一致性问题
- 存储空间管理问题
有了需要解决的问题,便有了数据库管理系统要完成的功能;但为什么是数据库管理系统而不是文件系统? 可以简单的从下面表格中看出区别:
| 特性 | 文件系统 | 数据库 |
|---|---|---|
| 数据共享 | ❌ 困难 | ✅ 容易 |
| 数据一致性 | ❌ 难保证 | ✅ 有约束机制 |
| 并发控制 | ❌ 无 | ✅ 有锁机制 |
| 事务支持 | ❌ 无 | ✅ ACID特性 |
| 数据恢复 | ❌ 困难 | ✅ 有备份恢复 |
| 查询效率 | ❌ 低 | ✅ 有索引优化 |
数据库内核架构如下图所示(不同的系统可能有些细微差别):
