@
roundgis 你说的对,读 sqlite 的故事时间太久了,记忆混乱了,是外包商。
“SQLite 诞生的契机就是典型的程序员开发的故事剧本。作者 Richard 最开始在一艘军舰上做 contractor (就是我们说的外包)。他们程序跑在军舰安装的电脑上,电脑上装的是 informix 。Richard 的工作就是把 informix 的数据拿出来进行计算然后展示到电脑屏幕上(这和我们今天的 CRUD 工作类似)。比较令人恼火的是 informix 很不稳定,经常崩溃连不上。部队里的铁拳长官可不懂啥 TCP/IP 或者数据库系统知识。他们只看到软件的报错 dialog (对话框) 经常弹出来,而这个 dialog 又是 SQLite 的作者 Richard 写的软件画出来的,锅自然从天而降。于是 Richard 决定自己从头写一个无需外部连接的数据库来解决这个问题。
当时恰逢布什政府消减政府预算,Richard 作为外包商没法获得订单,不得不暂停在军舰上的开发。这让 Richard 有了几个月的时间去构思并从头实现 SQLite 。那时时间是 2000 年初,软件开发没有现在这么多参考资料,没有维基百科,google 还没完全起来, 美国只有 1% 家庭有宽带。 而 Richard 也没有数据库开发经验,只有编译器开发经验。他最初的构想非常简单,把每条 sql 语句看成一个独立的执行程序。于是他首先实现了 bytecode 执行器,然后把 sql 语句转化成 bytecode 执行。一开始 SQLite 并没有替换掉他们在军舰上的 informix ,尽管他们每个开发者都恨透了 informix ,但客户指定要用又不得不继续使用(好熟悉的场景)。就这样 SQLite 一直做为 Richard 的 side project 在开发。
为了验证一些想法和测试其中的代码,Richard 开始把 SQLite 发布到网上,接下来的故事和 Linux 诞生有点类似了。很多人看到一个数据库居然能运行在 palm 这种性能非常弱的掌机上都大为惊叹。”