C语言搭建数据库
文章平均质量分 75
ZhangzrJerry
这个作者很懒,什么都没留下…
展开
-
【C语言搭建数据库】Part05 - 持久化存储数据库
这部分将实现数据库的持久存储,文章原地址:https://cstack.github.io/db_tutorial/parts/part5.html我们的数据库能插入记录并读回记录,但前提是保持程序运行。如果你终止了程序并重新启动它,那所有存储的记录都将小时。就像sqlite一样,我们通过把整个数据库保存到文件中来持久化数据。我们已经通过把行序列化为页大小的内存块来做到这一点。为了进一步提高数据的持久性,我们可以简单地把这些内存块写入文件中, 并在下次启动程序是把它们读回内存中。翻译 2023-01-02 22:49:01 · 338 阅读 · 0 评论 -
【C语言搭建数据库】Part04 - 测试和调试之前的代码
本节我们将使用R语言编写一个简单的测试程序并调试之前写的代码,原文章地址:https://cstack.github.io/db_tutorial/parts/part4.html。如果你看一下我们对Row的定义,我们为用户名分配正好32个字节,为电子邮件地址分配255个字节。向分割符的位置处(在我们的示例中为空格)插入空字符,来把输入的字符串拆分为多个子字符串。我们的数据库现在可以容纳1400行,因为我们设置了最大页数为100, 而每一页可以装下14行。让我们花些时间来测试一下目前我们拥有的功能。翻译 2023-01-02 18:15:20 · 111 阅读 · 0 评论 -
【C语言搭建数据库】Part03 - 搭建一个最简单的数据库
我将页面大小设为4kb,因为大多数计算机体系结构的虚拟内存系统使用的页面大小也是4kb.这意味着我们数据库的一页刚好对应操作系统使用的一页。像B树一样,它会把行组合为页,但不把这些页排列为树,而是把它们排列为数组。这部分内容教你写一个基于内存的、只能添加的、只有一个表的数据库,原文章地址:https://cstack.github.io/db_tutorial/parts/part3.html。当我们选择树结构时,数据库的最大大小只受到文件最大大小的限制(尽管我们仍然会限制同时在内存保留的页数)翻译 2023-01-02 12:39:33 · 1049 阅读 · 0 评论 -
【C语言搭建数据库】Part02 - 世界上最简单的SQL编译器和虚拟机
看起来像一个特殊情况(C语言甚至不支持它),所以我们在可行的情况下用枚举类型来表示代码执行的结果。如果我们的switch语句没有处理枚举类型的成员,C编译器将会提示,所以我们可以更有信心地处理函数的每种结果。我们正在制作一个翻版的sqlite. 其中它的前端部分是一个SQL编译器,用来解析输入的字符串命令,并输出内部表示的字节码。接下来,我们把输入行转换为内部表示的语句。是我们的SQL编译器,事实上它并不能完全理解SQL,它现在只懂两个关键字:。通过重写代码,我们现在能够识别两个新的关键字。翻译 2023-01-02 11:37:34 · 356 阅读 · 0 评论 -
【C语言搭建数据库】Part01 - 什么是SQLite & 制作一个简单的REPL
在sqlite的网站上有很多,此外这里还有一本.一条查询语句通过一系列组件来实现数据的检索或修改。前端的输入是SQL查询语句,输出是sqlite虚拟机字节码(本质上是一段可在数据库操作的编译程序)。使用前端生成的字节码作为指令。并且可以对一个表或多个表或索引进行操作,每个表或索引都被存储在一种叫B树的数据结构中。虚拟机的本质上是一种关于字节码指令类型的大开关语句。每一棵包括了许多节点。每一个节点的长度为一页。B树可以从磁盘中检索数据页,或向寻址器发送命令将其保存至硬盘。接收用于读写数据页的命令。翻译 2023-01-02 10:17:41 · 254 阅读 · 0 评论 -
【C语言搭建数据库】Part00 - 概述
为了弄清楚这些问题,我基于scratch写了一个数据库。这个数据库模仿了sqlite,它有轻量化的优点,和MySQL或PostgreSQL相比使用更少的特征,所以我有更大的希望来彻底理解他。数据库的全部代码被存储在一个单独的文件中!作为一位网页开发者,我每天都在工作中使用关系型数据库,但这对我来说却是个黑盒。本项目使用C语言教你制作自己的sqlite数据库,并被github爆火项目合集。由于本人水平有限,翻译不当之处在所难免,敬请指正。收录,经译者翻译为中文,供大家学习参考。换句话说,一个数据库是。翻译 2023-01-02 10:11:47 · 322 阅读 · 0 评论