#杂
我记得大概是去年这个时候,由于前公司要重构一下存储元数据的存储引擎,开始研究怎么实现一个轻量级的存储引擎。

当时想研究一下市面上的B+Tree版本的存储引擎,可是有的项目很大(Innodb、WireTigger等),有的项目就是个玩具,只能演示原理做不到生产级别。这段时间可以说压力很大,印象最深的是当时去北京团建外出到景区,当天凌晨有世界杯亚洲区预选赛澳大利亚对中国,睡不着就一边看代码一边听比赛。

这时候偶然看到的一个精简的2.5版本的sqlite btree库,只有几千行代码,这个简单的实现打开了理解生产级B+Tree实现的大门。

在这之后就是“顺势”看了更高版本的sqlite btree实现,这些故事都写在了:sqlite3.36版本 btree实现(零)- 起步及概述》

仅就“生产级B+Tree”实现而言,sqlite的实现虽然还是有各种问题:比如效率不高等,但是都向我展现了总体的实现思路,后面再看这方面的实现也有了基础,比如今年研究了ARIES这篇论文,最近还在看BW-Tree的论文。

现在一年时间过去了,我又开始探索一个新的领域:Jepsen,想在项目里使用上这个项目来验证我们系统的实现,初期仍然跟以往自己独立研究一些问题一样遇到很多困难,因为太多新的知识点没有接触过:Clojure、模型检验(Model checking),等等。

回头来看,很多我后来看来获得技术上很大成长的时候,都是这种独立、深入研究某个领域之后带来的:身边没人请教、自己找答案、深入阅读文档、代码,等等。这样的经历多了以后,对这种压力似乎也感到适应,对压力之后的收益也清楚,甚至对解决这些难题有一些期望了。
 
 
Back to Top