阿里巴巴是国内最早开始做大数据的公司,也是国内最早开始做云计算的公司。阿里巴巴的数据分析平台非常齐全,今天我带大家看一看阿里巴巴的大数据发展历史。我们首先看看数据分析平台方面的发展。

MaxCompute

阿里巴巴作为国内最大的互联网公司之一,也需要一个大数据分析平台。阿里巴巴发展大数据平台,走了两条路:一部分业务用的是开源的 Hadoop,另外一部分则用了自己研发的平台。这个自己研发的平台最初叫 ODPS,也就是现在的 MaxCompute。

阿里巴巴的平台研发,时间上比微软、谷歌或者雅虎起步的时候稍微晚了一点。这个平台最初主要做法是前端和 Hive 兼容,使用了 Hive 的语法,后端从查询优化到查询的执行,到数据的存储都是自己开发的。当时负责开发的是徐常亮。

平台的开发一开始并不顺利。但是通过几年的磨合,这个平台也开发得有模有样了,和阿里内部使用开源 Hadoop 的组并驾齐驱。到后来,很多阿里内部业务都泡在了 MaxCompute 上。当然,阿里巴巴的 MapReduce 叫作 E-MapReduce,至今依然是阿里云支持的服务之一。

MaxCompute 在 2015 年迎来了一次大换血。当时微软 Cosmos 部门负责 SCOPE 开发的领导,微软合伙人之一的周靖人加盟阿里云,成为阿里的副总裁兼首席科学家,MaxCompute 成为了他手下负责的方向之一。

此后随着曾在微软 SCOPE 队伍里的中国人的加盟,MaxCompute 的负责人换成了微软来的关涛,同时加盟的还有后来 MaxCompute 的总架构师林伟。这群新来的人对 MaxCompute 的整个框架做了很大的改动,让整个框架更加得模块化。在 2017 年的时候,MaxCompute 第 2 版也顺利发布了。

目前阿里巴巴内部的很多数据分析任务都跑在 MaxCompute 上。这也是就我所知除去谷歌和微软以外,全球第三家不基于 Hadoop 生态圈,而是基于自己开发的系统做大数据分析的公司。

OceanBase

OceanBase 是另外一个非常重要的产品,严格一点来说它属于蚂蚁金服集团。OceanBase 是阿里巴巴集团的新一代分布式金融关系数据库,主要面向对象是蚂蚁金服集团内部的各种金融业务。

阿里巴巴公司建立的早期,业务主要跑在 Oracle 的数据库上。但是随着时间的推移,Oracle 数据库越发无法支撑阿里巴巴的业务规模,而 Oracle 的昂贵价格也让阿里巴巴的运营成本居高不下,这就有了用自己的软件代替 Oracle 数据库的想法。

阳振坤老师是 OceanBase 项目的负责人。根据 2017 年财富排行榜公布的信息,他的目前身价是 70 亿元。但是阳老师至今依然领导 OceanBase 的工作,为理想而奋斗。

OceanBase 起始于 2009 年,最初是支付宝钱包项目的一个子模块。后来 OceanBase 独立出来,慢慢做成了一个通用的数据库系统,并被用到了蚂蚁金服集团各个不同的项目上。2014 年的 OceanBase 是第一个稳定版本,还一度开源过。但是那个时候的 OceanBase 有一个问题,数据写入时只能从一个节点写入,会造成写操作的瓶颈。

伴随蚂蚁金服业务规模的扩张,这个问题导致 OceanBase 在很多项目上成为瓶颈。2014 年开始研发的新版本最终将这个问题解决掉了。2017 年的时候,按照蚂蚁金服集团非官方的说法,OceanBase 已经全面取代了 Oracle,成为蚂蚁金服主要业务的、唯一的数据库平台。

PolarDB

阿里巴巴早年大量使用 Oracle,所以培养出了中国最早的一批 Oracle 高手。但是阿里巴巴也是大量使用 MySQL 的,所以集团内部也培养出了第一批 MySQL 的高手。

以俞峰为首的团队是阿里巴巴内部对 MySQL 最为精通的团队之一。这个团队对 MySQL 进行了大量改良,使之支持了阿里巴巴的很多业务,其核心业务主要是在非金融方面。包括 MySQL 的两地三中心主从备份的版本,都是从这个团队里出来的。

2017 年正式发布的 PolarDB,是这个团队把这种 MySQL 的认知发扬光大以后最新的云端产品。如果要对标业界的产品,那么最合适的应该是亚马逊的 Aurora。但是从技术层面上来说,PolarDB 和 Aurora 有很多不一样的地方。

PolarDB 兼容 MySQL 的 API,后端则通过最新的硬件和软件相结合的方式,使性能达到了 MySQL 的 10 倍,同时还可以有效地处理大量的并发请求。这个系统无疑代表了阿里巴巴大数据方面一个很高的里程碑。

当然,在阿里巴巴旗下的数据分析平台,还不只这几个。比如说,阿里巴巴有 HybridDB for Postgress,我们可以认为这是类似亚马逊 Redshift 的产品。此外,阿里巴巴还有对主要的 NoSQL 开源产品的支持,比如说 MongoDB、Redis。这些产品都在 ApsaraDB 的品牌下。

重叠的功能

每次我面对阿里巴巴的产品时,都有一个很大的困惑。这些产品看起来是阿里巴巴内部不同的团队独立开发出来的,然后它们作为不同的产品出现在大家面前。

比如说,到今天如果要我在 OceanBase 和 PolarDB 之间给用户推荐一下,我会不知如何决策。因为从功能上看,这两者都是做事务处理的数据库。从宣传上看,两者都很牛,都支持了双十一,当然是在不同的业务上。

这种困惑并非只有我有,知乎上类似的问题很多,各种回答也是众说纷纭,有时候项目负责人也会亲自上场回答问题。但是看完答案,我的困惑更多了。在阿里巴巴发展的不同时期,不同的团队开发了功能类似的产品,这很正常。但是如果这些产品都一股脑儿摆在用户面前让用户挑选的话,商业上就不知道怎么评价了。