10.5K ·GitHub
这是什么?
这是一个动手实践型教程,从零开始用 C 语言编写一个 SQLite 克隆版,通过逐章构建,讲解真正的数据库内部是如何工作的。
这是一个我能直接使用的数据库,还是只是一个教学项目?
这是一个教学项目:你将构建一个精简但可用的数据库(包含 REPL、B 树存储和简单的类 SQL 命令),目的纯粹是学习数据库的工作原理,而不是替代 SQLite。
我该怎么学习这个教程?
在线阅读渲染后的教程,按章节进行,同时对照本仓库中的 C 源代码操作;此外还提供了在本地运行教程网站的说明。
除了 C 编译器,跟着学还需要别的东西吗?
构建数据库代码需要 C 编译器和 Make;测试套件是用 Ruby 编写的,因此如果想运行测试,就需要安装 Ruby。
这是一个功能完整、可以放心依赖的数据库吗?
不是。它只实现了真实数据库功能的一小部分(基础存储、B 树和简单的命令解释器),因此不适合用于生产环境。
这个教程是为谁准备的?
面向熟悉 C 语言、想通过亲手实现来理解 B 树、页和查询执行等数据库内部原理的程序员。
这个教程涵盖哪些内容?
内容包括构建 REPL、内存中及持久化的存储格式、页、B 树索引,以及一个简单的类 SQL 命令解释器,与 SQLite 的内部结构相对应。
作者为什么要自己动手构建,而不是直接阅读 SQLite 的源代码?
README 将其定位为一次学习练习:通过小而循序渐进的章节亲手构建各个部分,比直接阅读成品的生产代码更容易理解分页和 B 树等概念。
我能不跟着文字教程,直接阅读代码吗?
可以。仓库中包含与教程一同提供的可用 C 源代码,即使不逐章学习,也可以直接阅读最终的实现。
What are similar projects?
lytlnyblOS, redis-3.0-annotated, hello-algo, os-tutorial, TeachYourselfCS-CN, swift-algorithm-club, Go, asm-lessons
Which topics is it in?
storage-engine, from-scratch, low-level, ruby, data-structures, systems-programming, algorithms, computer-science, programming, sqlite, c, guide