我现在最感兴趣的一件事情,也是技术难度最高的一件事,就是设计和制造一个全新的数据库系统( DBMS )。在我一直以来的博文里,我已经明确的显示出了对数据库这个领域的风气,以及很多数据库产品的不满。数据库是非常重要,有巨大经济价值,却又被搞得最乱,忽悠最多的一个领域。
从最早的关系式模型和理论,到 SQL,到 NoSQL,到 NewSQL,大数据,图数据库…… 这个领域发明出各种吓人的名词,各种新的查询语言,却没有从根本性的认识到他们在解决什么问题。Berkeley DB 一类的系统上百万行代码,结果到最后发现它解决的问题,其实可以用几千行代码解决,而且速度还要快很多。这说明什么问题?这说明这个领域的人根本不知道他们在做什么,他们缺乏对于计算和语言最本质的理解。
经过一段时间的摸索,我已经窥探到数据库系统里各种概念的本质。实际上的问题,恐怕比几十年来很多人想象的要简单和容易很多。再加上之前从头构造 B+ 树等关键数据结构的经验,这使得我在这个领域如虎添翼。号称当今世界最快的某数据库,里面的 B+ 树代码居然是从别人那里拷贝过来改成的,而且混乱复杂不堪。从我的 B+ 树设计出发,再加上对数据库里面各种概念(比如事务)的重新理解,我将会构造一个极其简单而高效的底层数据库系统。
在此之上,结合我对程序语言和编译器的深刻理解,这个数据库将拥有一个极其简单而强大的查询系统,用以解决远程访问和多机构架的需求。这个数据库不是 SQL,也不是 NoSQL,也不是什么 NewSQL。它只是把数据库还原到它本来应该是的样子,恰到好处的解决问题。
谈到分布式数据库,我不得不指出,分布式系统也是一个很混乱的领域。其中充满了各种像 Paxos 一类糊涂而没人讲得清楚的理论。Paxos 的论文被评委拒了三次才投稿成功。按照我的标准,这种故意把问题搞复杂的论文,根本就不应该让他发表。我非常的不欣赏这篇论文里面所谓的“幽默”,一点都不好笑,还把问题弄复杂了。
最近有人发表了 Raft,才稍微好一点,然而里面还是遗留了许多不必要的复杂性和 Paxos 留下来的历史思想包袱(像状态机一类的东西)。我的另一个目标就是消化和转换这类分布式系统理论,使得它们大大简化,用以扩展底层数据库,而得到分布式的扩展和可靠性保障。
这是一个相当大规模的计划,包括了大量的研究和实现工作,所以可能会花不少时间。当然,最后的代码应该不会很长。我的目标,是建立起一家可以跟 Oracle 匹敌的数据库公司,统一和简化互联网领域和其它新兴领域的数据库应用,并且蚕食银行等传统领域的数据库市场。
我已经跟一些数据库领域的内行进行了关于数据库本质的探讨,我也欢迎对此感兴趣的其它人士跟我讨论。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.