Skip to main content

数据库内核入门-01 - 开篇

· 4 min read
ULis3h
Ex-ISCAS Software Engineer,

简述

这是数据库内核入门系列的第一篇文章。 由于水平有限,文章可能会有错误,欢迎指正。

注:根据时代发展的需要,数据库已经衍生出针对多种应用场景的数据库系统,如关系型数据库、非关系型数据库、图数据库等。本文将主要介绍关系型数据库内核的实现。

基本概念

数据(Data) 是描述事物的符号记录,是信息的载体。

数据库(Database) 是按照特定数据结构组织、存储和管理数据的仓库。

数据库管理系统(Database Management System) 是用于创建、管理和维护数据库的软件。

数据库内核(Database Kernel) 是数据库管理系统的核心组件,负责处理数据库的创建、管理和维护。

数据库简介

数据库

首先来思考库房这个概念,在这里,我故意避开仓库这个名词,原因是数据仓库和数据库的概念并不相同。 库房的作用是对于货物存储-提取;如果将数据看成是这样的货物,那么数据库则是这样的库房; 数据库是管理数据的基础设施,它为上层应用程序提供存储和读取数据的服务。如微信的联系人信息、学校的学生信息管理系统等,都是使用数据库来存储信息。

数据模型

继续上面库房的思路,可以延伸下,在现实中库房内部有着不同的构造,如货架之类的来指导人们将货物怎样进行摆放,那么既然将数据库比作现实中的库房,那么数据库在存放数据时,也应当有一定的结构;这就是数数据模型,数据库结构的基础时数据模型。数据模型可以被划分为以下四类:

  • 关系模型(relational model)。关系模型用表的集合来表示数据和数据之间的关系。
  • 实体-联系模型(entity-relationship model)。用"实体、属性、联系"三要素来描述现实世界数据结构的可视化建模方法。
  • 基于对象的数据模型(object-based data model)。实体-联系(ER)模型增加了封装、方法、函数和对象标识等概念的扩展。
  • 半结构化数据模型(semistructured data model)。允许相同类型的数据项含有不同的属性集的数据定义。如XMLJSON等。

数据库管理系统

数据库管理系统(Database-Management System, DBMS),用通俗的话来讲就是管理数据库并提供操作程序的一组软件。下图为数据库管理系统在宏观上的结构:

数据库管理系统宏观结构

数据库内核要完成的功能

数据库内核本质上要解决如何高效、可靠的管理海量数据的问题。具体而言:

  • 数据持久化与可靠性问题
  • 并发访问控制问题
  • 查询性能优化问题
  • 事务一致性问题
  • 存储空间管理问题

有了需要解决的问题,便有了数据库管理系统要完成的功能;但为什么是数据库管理系统而不是文件系统? 可以简单的从下面表格中看出区别:

特性文件系统数据库
数据共享❌ 困难✅ 容易
数据一致性❌ 难保证✅ 有约束机制
并发控制❌ 无✅ 有锁机制
事务支持❌ 无✅ ACID特性
数据恢复❌ 困难✅ 有备份恢复
查询效率❌ 低✅ 有索引优化

数据库内核架构如下图所示(不同的系统可能有些细微差别):

数据库内核细致架构图