SQLite第一版的诞生

126 阅读2分钟

SQLite第一版的诞生

时光倒回到2000年,那时还没有维基百科,人们上网主要靠拨号,我们无法询问谷歌如何写一个数据库。SQLite的作者D. Richard Hipp那时失业在家,凭借着之前构建编译器的经验,把在上一份工作中的创意——一个不需要服务器的数据库引擎——做了出来。这就是SQLite的第一版。

SQLite第一版的诞生-img1.png

图 SQLite的提交历史记录

Richard的上一份工作是带领团队为一艘全副武装的战列舰开发程序。他们的程序基于一个不太可靠的Informix的数据库服务器。这个数据库服务器正常运行时倒是没有问题,但一旦宕机,他们的程序就无法运行,还会弹出一个对话框,上面写着“Can’t connect to database server”(无法连接到数据库服务器)。他们对数据库服务器没有任何控制权,可不出意外,谁弹的报错对话框,谁背锅。

为了提升程序的可靠性,Richard团队将所有数据读入内存,好在程序不需要增删改数据,所以只要将数据全部读入内存,就万事大吉了。既然如此,为什么还需要服务器呢?为什么不能直接从硬盘取数据呢?如果直接从硬盘读数据,那只要计算机能正常运行,程序就能正常运行,这就消除了会导致程序失败的一层依赖。不过当时还没有哪个SQL数据库引擎可以做到这一点。这时,一位同事对Richard说:“那你为什么不自己写一个呢?”

img

SQLite的作者D. Richard Hipp(美国 1961-04-09~)

此言一出没过多久,因项目被终止,Richard就失业了。但也是时候开始造数据库了。由于有构建编译器的经验,Richard将每个SQL语句都视为一个程序,那么所要做的就是将这种“程序”编译成某种可执行代码,为此他编写了一个能够运行查询语句的字节码引擎(虚拟机),并编写了一个编译器,将SQL翻译成字节码。

咔嚓一个大雷,我的妈呀,SQLite诞生了。