DBDB的诞生背景
Taavi Burns:还记得第一次写程序卡在一个 BUG 上时的情景,那时我正运行自己刚写好的 BASIC 程序,不知道为什么屏幕上有些像素点一闪一闪的,然后程序就中止了。我回过头来查看自己的代码,发现代码最后几行竟然消失了。
正巧我妈妈的一个朋友会编程,交流了一下后就找到问题出在哪了。程序太大以至于占了显存。一旦屏幕清空,我的程序就直接被截断了。
自此之后,我就非常注意内存分配的问题了,我学习了关于指针的知识,知道了如何使用 malloc 分配内存,还学习了数据结构是如何存储在内存上的,你必须非常小心地应对这些内存上的数据,一旦修改了不该修改的地方,你的程序会崩溃而且可能需要花很长时间来调 BUG 。
一些年过去了,我遇到了一门面向并发程序设计的语言 Erlang,原来进程间通信并不一定要复制数据,所有的数据结构都是不可变的。之后我又学习了 Clojure 中的不可变数据结构,渐渐沉迷于此道。
2013 年的时候我阅读了 CouchDB 的源代码,他的设计理念,对于复杂数据的管理机制都让我由衷的认同和欣赏。我认识到使用不可变的数据结构设计系统会是一个不错的主意,所以就有了 DBDB 和这篇文档(500L 上的原文档)。
当我实现可变的二叉树时遇到了不少麻烦,当你对数据的一部分做出改变时你不知道它会不会影响到其它部分,需要考虑的边界情况很多,但是更可怕的是有些情况你自己也想不到,简直是一团乱。但是当我改用不可变的数据结构后,麻烦几乎都消失了,程序不那么容易出 BUG 了。我再一次认识到使用不可变的数据结构会使开发和维护程序更加容易。
——以上内容来自【Python实现键值数据库】