数据库项目【Let's Build a Simple Database】学习笔记

245 阅读2分钟

一直想系统的学习数据库,在网上看到一个不错的开源项目Let's Build a Simple Database,项目作者使用C语言从零开始写了一个简单的数据库,因此学习了一下,并作如下笔记。

本项目的优点是引领着读者从零开始入门制作一个简单的数据库,缺点是似乎作者最后并没有完成项目,还留下了很多的未完成部分。另外,就是本文是用C语言写的,对C语言不好的小伙伴不太友好。这里给自己立个flag,等后续数据库学有所成的时候,我也自己写个类似的项目~~

废话不多说了,下面看正文。

数据库是如何工作的?

  • 数据以什么格式保存?(在内存和磁盘中)
  • 它何时从内存移动到磁盘?
  • 为什么每个表只能有一个主键?
  • 回滚事务是如何工作的?
  • 索引是如何格式化的?
  • 何时以及如何进行全表扫描?
  • 准备好的语句以什么格式保存?

简言之,数据库是如何工作的?

为了理解这一点,我正在用C从头开始构建sqlite的克隆,并且我将记录我的过程。

目录

  • 第1部分-介绍和设置REPL
  • 第2部分-世界上最简单的SQL编译器和虚拟机
  • 第3部分-内存中、仅附加、单表数据库
  • 第4部分-我们的第一个测试(和bug)
  • 第5部分-磁盘持久性
  • 第6部分-游标抽象
  • 第7部分-B树简介
  • 第8部分-B树叶节点格式
  • 第9部分-二进制搜索和重复键
  • 第10部分-拆分叶节点
  • 第11部分-递归搜索B树
  • 第12部分-扫描多级B树
  • 第13部分-拆分后更新父节点

“What I cannot create, I do not understand.” – Richard Feynman

sqlite-architecture2.gif