MongoDB和AWS又干上了,指出DocumentDB兼容性问题
最近,MongoDB和AWS又干上了,连续发了两篇文章,直指AWS DocumentDB并不能很好兼容MongoDB,只有33.84%的兼容性。

MongoDB是当前NoSQL领域最成功的开源数据库,是JSON文档数据库的老大,相信很多技术人都知道,开创性探索出了开源+云原生服务的商业模式,公司市值已经260亿美金。
DocumentDB是AWS研发的一个兼容MongoDB的数据库,这个也是AWS对MongoDB修改开源协议的一个反击。

讲讲MongoDB与AWS的历史八卦:2018年,MongoDB指责云平台窃取开源软件成果,于是修改了MongoDB的开源协议,之前主流的Apache、MIT/BSD、GPL/AGPL开源协议,公有云平台可以不需要为开源软件付费,这导致一些开源软件厂商非常愤怒,MongoDB是数据库开源软件的代表之一,并且已经是上市公司,肯定有业绩压力,因此把开源协议从AGPL修改为SSPL(Server Side Public License)。
SSPL的核心点是普通用户可以免费使用开源软件,但是如果是类似AWS这种为客户提供开源软件托管服务的平台,需要得到原厂的授权,或者是把平台相关的代码全部开源。
SSPL这个协议的变化就导致AWS坐不住了,开源AWS自己的云平台代码,这个是不可能的,因为云平台的代码层层关联,只有全部开源才能符合协议要求。如果要得到MongoDB的授权,这个费用按AWS的体量,估计每年要支付上亿美金。
最后AWS没有与MongoDB合作,而是在Aurora的基础上研发了DocumentDB产品,宣传点是兼容MongoDB协议和API。虽然大家彼此不爽,事情也算告一个段落,各奔东西。
MongoDB希望修改开源协议来推进与云平台的合作,但是海外几大云平台并没有如愿合作,第一家与MongoDB合作是中国的阿里云,双方谈判超过2年,最后2019年终于敲定,MongoDB给阿里云提供最新的代码授权和技术服务,包括MongoDB企业版能力,阿里云可以自由售卖,MongoDB从阿里云的销售成果中获取收益,皆大欢喜。阿里云数据库里MongoDB也是大卖,更多核心力量也投入到了研发自己的拳头产品(PolarDB、AnalyticDB等)。两家公司一直合作非常好,也是开源软件和云平台合作的一个共赢案例了,后来MongoDB也与腾讯云平台达成了合作。

最近又有新导火索,估计是客户竞争原因,MongoDB连续发表了两篇文章,指出AWS的DocumentDB和MongoDB只有33.84%的兼容度,并且给出了很多测试数据,下表是MongoDB给出的DocumentDB兼容性测试通过率。

MongoDB现在主推是自家的Atlas云服务,并且给出了DocumentDB与Atlas的差异,他们认为DocumentDB只是和MongoDB3.0/3.2版本兼容度很好,对MongoDB4.0后的特性兼容度很差。最后一条也挺有意思,MongoDB认为DocumentDB的团队对MongoDB的专业知识不足。

从业务端来看,DocumentDB与MongoDB基本功能的API是兼容的,但是在MongoDB4.0以后新增的功能以及不同产品底层实现原理上还是有很多差异。这个就有点像很多数据库宣传兼容Oracle一样,产品会宣传高度兼容,如EDB(PostgreSQL的领导厂商之一,其产品以兼容Oracle著称)、达梦、OceanBase,但是底层原理差异很大,所以更多是在语法层面兼容,在高级特性方面肯定是做不到兼容的。
按MongoDB这个对比逻辑,EDB等数据库与Oracle的兼容度30%估计都不到。但是最终用户体感还是可以的,毕竟语法和协议兼容是应用改造最大的工作量。
这次MongoDB发出对AWS Document的兼容性问题,又把云平台拉到了对立面。云平台需要找到更好的与生态软件合作方式,毕竟云平台基础也是要靠其他软件支撑,比如EC2(Linux),RDS(MySQL、PostgreSQL)等等。
参考文档
https://mp.weixin.qq.com/s/FRfkBmqbmvsdPIf6gEd19A
https://mp.weixin.qq.com/s/DPPgTyrG0XPaECOQPQi4lg
https://aws.amazon.com/cn/documentdb
https://developer.aliyun.com/article/725383
https://github.com/mongodb/mongo?tab=License-1-ov-file#readme
https://forums.rocket.chat/t/legal-implications-of-mongodb-licensing-change/2332