<audio id="audio" title="081 | 亚马逊的大数据故事：创新和拿来并存的云服务" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/81/0d/81970a2f30c496871ca78562a688730d.mp3"></audio>

随着大数据的发展，数据处理变得越来越重要，亚马逊的云端数据处理和分析服务也逐渐多起来。亚马逊的这些服务，除去已经提到的DynamoDB和Elastic MapReduce，还有很多。它们的来源大致分为两种：一种是自己开发的，另外一种则是拿开源的包装一下。今天我们就来看一看这些服务。

## Redshift

Redshift是亚马逊比较早的一个基于云的数据仓库系统。Redshift是一个兼容PostgreSQL 8.0.2版本的数据仓库系统，前端对SQL语言的解析复用了PostgreSQL 8.0.2版本的源代码，后端最初是基于一家亚马逊投资的公司ParAccel的并行数据仓库处理技术。Redshift在2012年以Beta版发布，2013年2月正式亮相。

Redshift无疑是亚马逊最为成功的数据处理云服务之一，或许我们都不需要加“之一”这种说法。Redshift自诞生开始就受到了中小型企业的欢迎，很多大型企业（比如Airbnb）也一度使用它。

Redshift到底有多牛？证据之一，在2017年的年度大会OpenWorld上，Oracle创始人拉里 · 埃里森（Larry Elison）在发表主题演讲时，把Redshift作为Oracle的唯一对标的产品进行了比较。Oracle在数据库领域的建树，决定了任何一个被Oracle作为敌人对待的人，都是在这个领域里面取得了相当成就的。这一次，Redshift终于“荣幸”地成为了“靶子”。

Redshift这款产品，长久以来都有自己独立的数据存储方式，用户需要从其他地方把数据导入Redshift才可以使用。2017年4月，亚马逊发布了叫作Redshift Spectrum的新功能，从而允许Redshift直接访问存储在S3上的文件。

这个新发布的功能，给业界带来了相当大的震撼。结合亚马逊S3存储的无敌和Redshift的查询功能，这进一步强化了亚马逊在云端数据处理上的能力。

Redshift在市场上最大的竞争对手是Snowflake，这是一家云端弹性数据仓库的创业公司。有关Snowflake的故事，我会单独介绍。

## Aurora

Aurora是亚马逊推出的第二个数据库云端服务，2014年底推出。如果说Redshift是服务于数据仓库和数据分析的，Aurora主要是亚马逊用于事务处理的服务。

Aurora和MySQL  5.6版本兼容，其存储引擎和InnoDB兼容。2017年的时候，亚马逊又推出了和PostgreSQL兼容的Aurora数据库。这样一来，两大开源数据库都兼容了。

Aurora是亚马逊另外一款在云端受欢迎的数据库。亚马逊自己公布的数据显示，Aurora的性能比传统MySQL要快5倍，性能提升主要是源于亚马逊自己设计的，属于商业机密的基于SSD的存储结构。

Aurora团队在2017年发表了一篇论文，介绍了Aurora的实现细节。其中最为创新的地方在于计算引擎往存储层写入东西的时候，可以做得非常轻量级，只需要把日志文件记录传下去就好，文件系统本身实现了对数据的整理和冗余的保证。

结合Aurora和Redshift，亚马逊拥有了关于数据仓库和事务处理全方位的解决方案，这也让它在云端数据库领域越发显得有竞争力。

## Athena

Athena是亚马逊的一个查询服务，它允许用户直接查询存储在S3中的数据。和Redshift以及Aurora不同，Athena是Serverless架构的，这个服务可以按照计算的需要自动起虚拟机，就能够进行查询。用户不再需要显式的起虚拟机，大大的方便了用户的使用体验。

此外，它与Aurora以及Redshift还有一点不一样，Athena是一个拿来主义的产物。它基于开源项目Presto，这个项目在Facebook、Airbnb、京东等很多公司都被广泛使用。实际上，按照公布的信息来看，Redshift Spectrum也是基于Presto的技术。

亚马逊当然是对Presto进行了很多的改进。但是以亚马逊一贯的作风，这些改进并没有被重新贡献回开源社区。所以指望亚马逊在从开源吸血的时候能够反馈社会，可能过于乐观。

## Kinesis

Kinesis是亚马逊平台上另外一款重要的产品，它主要针对的是对流数据的导入和分析。从某种程度上来讲，Kinesis平台对应的开源产品是Kafka。这一次，亚马逊选择了不用Kafka，而是自己开发一套具有竞争意义的产品。

这是一个我不太理解的决定。因为Kafka在开源社区里面是质量挺高的一款软件，它的用途也很广泛，充分被人证实了是靠谱的选择。亚马逊这个非常擅长“拿来主义”的公司，这次竟然选择了自己去建一个系统。

我后来注意到，这个团队的主管人员是微软里面早年做流计算平台出身的。我想可能这位主管人员觉得，自己的经验搭建一个新产品可能会比Kafka更成熟更先进。至于实际效果，我们还需要时间去验证。

但是不管怎样，作为在AWS上流计算的唯一选择，Kinesis推出以来还是吸引了不少用户。这个产品无论如何，结果都应该不会太差。只要AWS本身表现可以的话，流计算总是有需求的。

## Glue

Glue是亚马逊2017年最新推出来的云计算服务。它的主要目标是ETL，ETL是数据管理整个生态周期中很重要的一环。以前用户需要把数据导入Redshift之类的数据库时，需要自己去写ETL的管道（pipeline），这无疑非常不方便。

Glue的推出是亚马逊想要弥补这块市场缺失必然的一步。至于为什么到2017年才提上日程，我想数据处理的产品，核心的还是在数据处理，而数据的导入，很多用户有自己成熟的解决方案，其优先级到底有多高不好说。

## QuickSight

严格讲，QuickSight不是一个数据处理分析工具，而是一个数据可视化服务，主要的服务对象是商业智能仪表盘（BI dashboard）。

亚马逊主推的QuickSight和传统的BI领导者比起来，还有很多的问题，比如说功能上比较单一。但是它主要的优点是成本低廉，又和亚马逊云端的其他产品紧密集成。所以对于中小企业，不需要太复杂BI功能的，这是一个很好的选择。

我们可以看到，亚马逊在云端已经构建了非常完善的大数据处理生态圈，这其中既有开源的，又有自己构建的，这个生态圈足以让亚马逊对任何一个传统的和云端数据处理的提供者展开竞争。

亚马逊在整个大数据的发展历程里，通过Dynamo产品给大数据的发展作出了巨大贡献，也体现了一个业界领先企业的创新能力。很多其他的产品，也展现出了亚马逊良好的创新能力。

但是亚马逊从Hadoop开源社区获得了很多的便利，却不愿意把自己的改进反馈给开源社区，实际上这种做法动摇了开源社区良性发展的基础，树立了一个坏榜样。所以对于亚马逊在大数据发展过程中的功与过，我们只能以一种很复杂的态度去看待，无法一言以蔽之。


