最近在学习 C 语言,偶然看到了一个 Let`s Build A Simple Database 的教程,瞬间吸引了我的兴趣。
教程地址:https://cstack.github.io/db_tutorial/
然后简单了解一下,这个教程就是实现一个类似 SQLite 的嵌入式关系型数据库,但是比 SQLite 更加轻量,旨在体现它的核心思想,并且让我们了解一下数据库的基本实现原理,例如内存数据结构、解析器、磁盘存储等,麻雀虽小五脏俱全。
正如作者开篇所说:
这个教程由 13 篇文章组成,前面 6 篇的内容比较简单,主要就是将固定格式的数据解析,然后持久化到磁盘当中,内存当中用数组存储全部的数据。
剩下的 7 篇文章难度稍微大点,就是在持久化存储之上,构建一个 B 树结构,使数据的插入、查找、删除都更加高效,教程大纲如下:
我目前做了前 6 篇简单的内容,每一篇文章作者都讲得比较详细,并且将代码都贴上来了,还标明了代码的前后变化,可以说是很贴心了:
这个教程有这几个点需要说明一下:
1、文章都是英文的,英文吃力的可能看起来会痛苦一点
2、所有的代码都在一个文件(db.c)里面,写着写着可能会晕
3、C 语言实现的,需要对 C 有一定的了解
我在写这个的时候,并没有把全部代码放到一个文件里面,而是做了拆分,可以参考下我的这个 repo:
https://github.com/flower-corp/simple-db-in-c
通过这个教程,能够对数据库的基本实现原理有一定的了解,是非常不错的学习和入门材料。
要是后续有空的话,我可以将这个教程翻译一下,并且提供 Go 语言的实现。