文章标题:
次日手写数据库内核:SQL搭建数据库交互桥梁
文章内容:
专栏相关 :
本专栏主要阐述如何从零基础开始进行开发,涵盖开发的具体步骤、涉及的原理以及开发过程中碰到的问题等,让大家能够跟上节奏一同参与开发,开源无限公众号上的更新会更为及时。
一、总体情况
上一节借助一个简易的C语言程序来模拟数据库的行为,从处理能力方面来看,也具备创建表、插入、删除、更新、查询等操作,但和人们常规认知的数据库存在较大差距。关系型数据库有一个很明显的特征,就是有标准的操控数据库的语言,也就是常用的SQL。我们所开发的数据库内核支持这一标准SQL,这样才能契合数据库的相关要求。说到语言,必然要开展语言的解析工作,这就如同自然语言经过人脑分析后转化为一系列人的动作行为;而数据库里的解析模块要把用户用SQL表达的意图通过词法和语法分析,转换成程序能够处理的数据结构。这听起来颇为有意思,那我们现在就开启这第一步。在开始之前再补充些内容,整个开发过程主要运用C语言来开发,解析时会用到正则表达式和上下文无关语法,它们所占比例很小。开发所使用的系统是CentOS 8.2,当然其他linux版本可能命令会有差别,Centos系列大致比较一致,能看到后续都会用到Makefile、gcc等编译工具;源码编辑器可以选用流行的VScode,它支持跨平台,当然也能使用Eclipse,或者自己熟悉的其他工具,不同编辑器之间默认的字符集可能不同,最好将其设置为UTF-8,Linux下统一换行模式,避免出现一些奇怪的问题。
二、SQL简要介绍
2.1 发展历程
SQL语言的发展起始于1974年,由IBM公司的Boyce和Chamberlin提出,并在IBM研制的关系数据库系统System R上得以实现。SQL最初设计目的是提升数据库查询效率,不过随着时间推移,SQL的功能已拓展到数据的插入、更新和删除等操作。1986年,SQL成为美国国家标准(ANSI)和国际标准化组织(ISO)的标准,随后在1987年成为国际标准。
2.2 SQL的作用
依据功能的不同,把SQL划分为DQL、DDL、DML、DCL等类型,经常使用的查询、插入更新等就属于DQL和DML范畴。
- 数据查询(DQL) :Data Query Language,使用SELECT语句从数据库中获取数据。查询操作的灵活性体现在能够依据需求选取特定的列或行,运用WHERE子句进行条件筛选,以及通过ORDER BY进行排序等。
- 数据定义(DDL) :Data Definition Language,使用CREATE、ALTER和DROP等语句来定义数据库结构,比如创建新表或者修改、删除表。CREATE语句用于生成新的数据库对象、视图或索引;ALTER用于修改现有结构,像添加或删除列;DROP语句则用于删除数据库对象。
- 数据操纵(DML) :Data Manipulation Language,使用INSERT、UPDATE和DELETE等语句来对数据库中的数据进行插入、更新或删除操作。
- 数据控制(DCL) :Data Control Language,使用GRANT和REVOKE等语句来把控数据库的访问权限。
- 事务控制(TCL) :Transaction Control Language,提供BEGIN TRANSACTION、COMMIT和ROLLBACK等语句用于管理事务,保证数据库操作具备原子性、一致性、隔离性和持久性(ACID属性)。
- 存储过程和触发器 :允许创建存储过程和触发器,这些数据库对象能够在特定事件或条件下自动执行一系列预先定义好的SQL语句。
- 嵌入式SQL和SQL API :SQL的嵌入式实现允许它直接嵌入到高级编程语言中,比如Java、C#等,通过特定的API调用去执行数据库操作。
2.3 SQL标准的演进
SQL标准的发展是一个不断推进的过程,旨在提升数据库的互操作性、可扩展性和性能。
1. 早期发展:
- 1970年代初,IBM公司的埃德加·科德提出了关系数据库的概念,为SQL的诞生奠定了基础。
- 1974年,IBM的D.D.Chamberlin和R.F.Boyce在研制关系数据库管理系统System R时,研发出一套规范语言SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。
2. 标准化进程:
- 1986年,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3.135-1986),后被国际标准化组织(ISO)采纳为国际标准。
- 1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准取代ANSI X3.135-1986版本。
3. 持续更新:
- 自1989年以来,SQL标准历经多次更新和完善,如SQL-92、SQL-99等版本。
- 这些更新旨在添加新功能、提高性能、增强与其他技术的集成等。
4. 最新标准:
- 国际标准化组织ISO于2023年6月1日正式发布了最新SQL标准,即SQL:2023。
- SQL:2023标准包含多个部分,涵盖了SQL语言的基本框架、基本原则、调用级接口、持久存储模块、外部数据管理、对象语言绑定、信息与定义概要等多个方面。
- 新增了第16部分SQL/PGQ,支持图形查询语言GQL,增强了SQL对图形数据处理的能力。
- 强化了SQL语言和JSON功能,以更好地满足现代应用的需求。
SQL标准的发展经历了多个阶段,并且持续得到更新和完善。最新SQL标准(SQL:2023)的发布为数据库技术的发展注入了新的活力,推动了数据库系统的不断创新和进步。大家要是对数据库内核感兴趣,可以关注我,从今天开始从零编写一个可用的数据库内核。