本项目使用C语言教你制作自己的sqlite数据库,并被github爆火项目合集build-your-own-x收录,经译者翻译为中文,供大家学习参考。
原文章地址: cstack.github.io/db_tutorial…
源仓库地址: github.com/cstack/db_t…
由于本人水平有限,翻译不当之处在所难免,敬请指正。
作为一位网页开发者,我每天都在工作中使用关系型数据库,但这对我来说却是个黑盒。对此我有几个问题想要了解:
- 数据库的数据用什么格式进行存储?
- 数据库什么时候把数据从内存移动到磁盘中?
- 为什么每个表只需要一个主键?
- 数据库怎么进行回滚操作?
- 索引是怎么格式化的?
- 扫描整个表时,在时间上和空间上都会发生什么?
- 准备好的语句用什么格式保存?
换句话说,一个数据库是怎么工作的?
为了弄清楚这些问题,我基于scratch写了一个数据库。这个数据库模仿了sqlite,它有轻量化的优点,和MySQL或PostgreSQL相比使用更少的特征,所以我有更大的希望来彻底理解他。数据库的全部代码被存储在一个单独的文件中!