话说在《西游记》第 3 回,孙悟空在花果山招待好牛魔王等六兄弟后,就自己一个去睡觉了。睡到半夜,孙悟空还是没醒,结果并发症一发作,他的魂魄被勾死人给勾了。
原著这样描述:
只见那孙悟空梦里见两人拿一张批文,上有“孙悟空”三字,走近身,不容分说,套上绳就把孙悟空的魂灵儿索了去,踉踉跄跄,直带到一座城边。孙悟空渐觉酒醒,忽抬头观看,那城上有一铁牌,牌上有三个大字,乃“幽冥界”。
孙悟空打入城中。唬得那牛头鬼东躲西藏,马面鬼南奔北跑,慌得那十代冥王急整衣来看,见他相貌凶恶,即排下班次,应声高叫道:“上仙留名,上仙留名!”
猴王道:“你既认不得我,怎么差人来勾我?”
冥王道:“不敢,不敢!想是差人差了。”
孙悟空道:“汝等既登王位,乃灵显感应之类,为何不知好歹?我老孙修仙了道,与天齐寿,超升三界之外,跳出五行之中,为何着人拘我?”
冥王道:“上仙息怒。普天下同名同姓者多,敢是那勾死人错走了也?”悟空道:“胡说,胡说!常言道,官差吏差,来人不差。你快取生死簿子来我看!”
这个「生死簿子」就是阴曹地府的数据库。这个数据库记录的是阳世间各种动物的寿命。
例如书上写到:皞虫、毛虫、羽虫、昆虫、鳞介之属,俱无他名。又看到猴属之类,原来这猴似人相,不入人名;似裸虫,不居国界;似走兽,不伏麒麟管;似飞禽,不受凤凰辖。另有个簿子,悟空亲自检阅,直到那魂字 1350号上,方注着孙悟空名字,乃天产石猴,该寿 342 岁,善终。
这段几句话说明了数据量的大,也说说明了数据检索的困难。「悟空亲自检阅,直到那魂字 1350 号上,方注着孙悟空名字」想必他花了不少时间。
冥王是如何管理这个庞大的数据库的呢?其实也经历好多阶段。在这里一一展开。
天地初生,可以管理的生灵不多,那时阎王用一个小本子写下阳间的各种生灵的阳寿。然后随着阳间生灵逐渐增多,一个本子不够,那就多用几个本子。这个时间产生一个问题。要查那位生灵阳寿啥时间到,每天都要花费大量的鬼力。于是他们想了办法,将记录的本子分类,例如皞虫、毛虫、羽虫、昆虫、鳞等。比如管猴科的就是专用一个本子,那边管理鬼员只盯着那几个簿子。随着猴子越来越多,记录猴子的簿子也越来越多,尤其检阅起来就很难了。这个问题困扰冥府好多年。
好多年后一个聪明的小鬼想了一个办法。那就是在动物分类的基础上,按照阳寿的数字再分类。然后改造了存放簿子的地方,新建了好多方格子来存放簿子。每个方格子做上记号,叫做编号。然后用一个「新的簿子」子记录格子编号,和格子中存放的簿子分类。这个新的簿子写着 123 格子,猴属,350岁,121格子,猴属,351岁等等。这种方式尽管增加记录的成本。但总体的管理成本,尤其检阅成本大大提高了。冥王大喜,上报玉帝表大功一件。
这套方式运行了几百年之后,需要管理鬼员越来越多,格子增多,记录格子的簿子增加了好多。还有一点很难解决的事情就是存放生死簿的元辰宫已经快没有地方了?这么大的事情,仅凭借阴曹地府这些鬼才们已经找不到解决方案了。如何呢?上报天庭。
玉帝下令在三界之中网罗神才、人才,如何解决生死簿管理问题。于是出现了各种流派。其中一派觉得元辰宫位置不够了,就新找一处位置,在增一个簿子记录不同存放位置。这位对冥府很有了解的神仙还说,每一份数据要至少存两份,最好 3 份,分布在不同的地方,要预防当年孙悟空销毁生死簿的危险。这位神仙解释是,世间生灵的增多,生死簿变多,存放位置变多必须增加更多位置存放。关于这一点,尽管有神仙提出如何缩减记录的字数等方法,但没有更好的办法。所以增加存放地方这个观点成为了仙界的共识。
数据查阅得慢而复杂,这点是各个流派最大争议来源。其中一派影响很大,说要改变之前存放方式,之前一个各种编号对应到具体的物,又有各种记录类别,各自的存储地域名称的,这种叫关系型。这一派说不要这么搞,这种检阅效率低。应该每个生灵一个唯一编号,然后编号后就是它的各种信息。这样查方便,记录起来整体性好也方便。这一派遇到一个问题,一条记录某一点写错了,那就是错了。不容易被发现。但在查和写上确实方便不少。这一派在一段世纪中呼声很大,冥府也有一部分生死簿也采用这种方式。但历史问题,以及过往的习惯,之前方式修修补补还是主流。
两派对数据安全,以及多备份的思想一样的。
除这两大派还有几个小派也有一些新奇的做法,这里简单的介绍一下。其中一派认为生死簿的主线应该是时间,那就按照时间线,以每个时间点为基准记录这个点上发生的事情,某只猴生了,某只猴阳寿已尽。他们的方式基于时间点可以将信息压缩,可以节省空间。但同样写入中某些错误防范上有点瑕疵。
另一个很有影响的小派,是几个年轻神仙提出的,他们说不应该指定那些地方存放,把生死簿的存放建立一个大网上,每个网的节点存储一部分,不同的节点存放相同的备份,查找时让快腿小鬼按照节点查。这是简单的介绍,这一套很复杂,搞的好多老神仙都烦迷糊,冥王听的更是不懂了。但这一派是新生力量,在天上地下被受关注。
基于生死簿记录存储问题的讨论还在继续,目前没有一个终极好的方式。阴曹地府也是各种杂糅用了好多多种方式。因而他们的数据维护也产生了很大问题。
看到这里,你看到程序思维了吗?其实这个过程就是数据库简要的发展过程。