双十一的数据库,数据库的双十一
本文仅代表本人的立场,与本人的公司无关。
1
我一个做数据库多年的朋友给我转了一篇文章,是发表在InfoQ上的,题目是“阿里自研分布式强一致关系型数据库--X-DB”。朋友想问一下我的看法。读了这篇文章之后,我的第一个感觉这个数据库真牛逼。有一副对联可以估计可以形容之。上联是“拳打Oceanbase”,下联是“脚踢PorlaDB”。横批“跑过双十一”。
当然这是个玩笑话。我仔细的阅读了这篇文章。简单来说,这篇文章介绍了X-DB选择了和MySQL的兼容策略。如果我透过字里行间理解的正确的话,这个数据库的代码应该是复用了MySQL的很多代码。而不是如同Oceanbase那样万丈高楼平地起。一切都是自己搭的。
文章的第二部分主要强调了这个系统使用的自己优化的Paxos版本X-Paxos,以及各方面的优化。从而让这个系统具备了全球容错能力。文章的第三部分则讲了如何在强一致下保持系统的高性能。但是里面描述的一些东西比如一体化日志其实并不新鲜,无论PolarDB还是Aurora都对MySQL的日志进行了大量改动,减少了IO消耗。
我顺着这篇文章提到的一些词汇搜到了一个叫做何登成的博客。恕我孤陋寡闻第一次听说这个人。但是看完他博客的文章,我必须说这个人做学问的态度非常的踏实,他的博客写的也真心是好。我有很久没有仔细的一篇一篇的阅读下来了。所以如果从作者的角度来讲,我相信X-DB可能是一个好东西。
2
但是我也有很多困惑。这个困惑主要还是X-DB到底是一个什么样的产品。其成熟度有多高。是不是一个只支持特定业务的产品。也许全球容错做得很好,因为X-Paxos做得不错,是不是有什么其他的缺陷。
对于InfoQ这篇文章的阅读,让我颇有回到上个世纪,阅读亩产万斤的水稻的感觉。又觉得真是自己的幸运,生活在这个时代,可以见证宇宙第一牛逼数据库在2017年底在阿里集团诞生。这种感觉和我读何老师的博客的谦虚谨慎,严谨踏实做学问的态度,形成了非常强烈的反差。
好在文章里最后写了一段有关X-DB的展望,我就把全文贴一下:
X-DB 1.0 是整个 X-DB 的计划的一部分,整个 X-DB 计划将按照三步进行
X-DB 1.0(X-Cluster): 集成 X-Paxos,实现金融级分布式强一致能力、一体化的架构设计以及统一的生态环境。
X-DB 2.0: 基于自研高性能低成本存储引擎 X-Engine,与分布式存储结合打造的计算与存储分离架构,能独立扩展计算和存储的能力,为业务在不同场景的负载下,提供灵活的伸缩能力。同时得益于全新设计的存储引擎,能够提供其他同类产品难以匹敌的性能。
X-DB 3.0: 新一代分布式关系型数据库,同时支持了数据自动分片负载均衡,多点可读可写,跨域强同步,AZ 内快速扩充计算节点的计算存储分离架构,应用了一系列技术:为充分发挥硬件性能的软硬件结合技术以及根据数据冷热特点的分层混合存储技术,无论上是在扩展性和高可用性,还是成本和性能上都做到极致,是 X-DB 计划数据库系统演进的最终形态。
所以我们大致可以认为,现在的X-DB其实就是X-Paxos和Alisql给整合了。而接下去会替换innodb这个存储引擎。而X-DB3.0这里确实是泄露了很多的天机。简单的来说,这个系统目前应该只支持静态的sharding。做不到自动分片。它的一致性模型到底是什么也写的稀里糊涂的。如果是Alisql整合了X-Paxos,估计是不可能支持全局一致性的。至于多点可读可写,上次我写了Oceanbase的研究以后,Oceanbase的人告诉我最新的版本里面已经支持自动分区和多点可写可读了。
所以我们可以这样认为,X-DB现在最牛的估计就是他们组做的这套X-Paxos了。从何老师的博客文章来看,显然X-Paxos确实应该有真材实料的。那么我们是否可以认为,这个系统其实就是Paxos的实现上比较强,其他方面基本上也就是沿用了Alisql的源代码。
3
这牵扯到了我一直以来很困惑的问题。我觉得研究阿里巴巴的数据库产品的实现很痛苦。一方面,每个阿里巴巴出品的数据库都告诉我说自己跑过双十一,非常的牛逼。另外一方面,我能够搜集到的介绍技术实现的资料屈指可数。而宣传文稿则总是慷慨激昂,让我不知道到底哪些应该相信,哪些不应该相信。
举个例子来说,2014年在VLDB的阿里之夜活动上我听阳老师介绍Oceanbase是怎么样取代Oracle的,就让我对Oceanbase的实现非常的有兴趣。但是我在网上可以找到的Oceanbase的细节并不多。虽然有一些ppt,也找到了早年阳老师在华东师范大学学报上发表的关于Oceanbase的一篇文章。
所以我自己去读这些东西,整理出Oceanbase到底做了什么,怎么做的。这个过程并不是一件很愉快的事情。等我把公众号文章写出去以后,很多知情人士会跳出来告诉我,我写的东西不是过时了就是错了。说真话,这真不赖我。
当然我也可以不需去研究。但是如果不研究一下的话,我怎么去相信这个数据库,那个数据库,还有那个数据库都很牛逼呢?有时候文章写的和实际上到底怎么样,之间显然是有距离的。
通过分析来看,我应该可以相信X-DB这个系统在Paxos的实现上应该很厉害。而且看起来是一个早起的产品。那么如果拿X-DB的Paxos实现和Oceanbase的Paxos的实现比一下,结果是什么呢?如果X-DB脱离了目前相对简单静态sharding的情况,要做动态分区分裂的话,这个Paxos的实现会有什么样的变化呢?我知道Oceanbase用的是Paxos而不是Raft主要还是阳老师在知乎上面的答疑问让我豁然开朗。从知乎的答疑上扒信息,去研究一个产品,也是做学问做的辛苦。
4
我今年在德国慕尼黑开会的时候有幸和Oceanbase的一些人聊聊Oceanbase的实现。同时我也见到了尚未正式发布的PolarDB的主创者。单纯就和这些人接触来看,无论是Oceanbase的人还是PolarDB的人,对不同问题的看法可能有不一样的见解,但是都是很踏实做数据库的人。给我的感官都很好。
只是作为一个用户来说,我觉得阿里巴巴集团推出来的数据库产品有点多。多的让我不知道怎么去选。我不知道什么样的业务场景下PolarDB是最合适的,什么样的业务场景应该上Oceanbase,又需要在什么样的情况下用X-DB。
如果这些东西我都不知道的话,又假设这些都作为云服务开放出来,我想作为客户来说,肯定会有选择困难症。而且还有一点,我当然知道双十一很牛。但是换句话说,到底有多少客户需要用到双十一这样的规模的数据量,并发度等等等等,我是很存疑的。大体上在我看来,用得到这样规模的,一般不会去上阿里云,来上阿里云的,肯定用不到这种极端情况。
所以这些数据库也许都是宇宙无敌超级牛的数据库。也许这些数据库都可以取代Oracle。但是我觉得一个在极端情况下能够成功运行的系统,很大程度上会针对特定场景进行优化,也有可能出现单机性能不怎么样的现象。譬如说,spanner这个很牛的newsql的单机性能就颇一般。
这种单机性能的损失,对很多小用户来说,就是问题了。毕竟是真金白银花出去,低效率的东西用起来。从这个角度来看,我会觉得那个单个mySQL容量超大,一般用户不用去担心分区问题的PolarDB可能是对很多用户最好的选择。然而,我必须说,即使各个都很牛各个都上过双十一,我作为用户,我不知道要选哪个DB。
5
从另外一个角度来说,一个系统到底牛不牛,还是需要外界来评价的。比如说谷歌的spanner好歹也是发了OSDI的论文的。亚马逊的Aurora也是写了SIGMOD论文的。在比较权威的国际会议上发表一下一个系统的实现,既能让国际同行给一个中肯的评价,又可以展示一下自己的肌肉,一举两得。
我是做学问出身的人。尽管学术界里也有这样那样的问题,我还是相信,一个发不出国际论文的系统,无论说的有多好,毕竟自己给自己画饼。可信程度总是要打个折扣的。再说如果没有谷歌等公司发表的论文告诉大家Paxos要踩什么坑,我想后来者估计也会更艰难一些。
所以如果X-Paxos,X-DB或者Oceanbase什么时候能真的写一篇论文,得到业界的人的认可,那既免除了像我这样要学习这个系统的实现,到处找材料最后还被告知我说的很多都是错的尴尬,又可以在国内国际上都正本清源,确确实实的让大家承认这系统就是牛。至于是不是跑了双十一,有没有经过考验,也许这对团队的业绩很重要,仅仅是这个不足以让我相信这个系统是宇宙无敌数据库。
我们还可以再加一点,不妨X-DB公布一下自己跑benchmark比如TPC-C的情况。当然从何老师的博客看,transaction处理速度的数量级是非常吓人的。所以估计跑个benchmark应该问题不大,数字应该很好看。这个其实也同样适用于Oceanbase。在我和Oceanbase的团队交流的过程中,尽管各方面我都感觉到对方技术非常的扎实,但是对方说TPC-C也有人在做,但是不是队伍的优先级。我始终不知道,这难道是说稳定的跑起来TPC-C对于一个可以取代Oracle的数据库有那么难?
打赏专用二维码
相关阅读: