2020:AWS云上八大类型数据库简介

十年前学习编程语言的时候,基本只要会用MySQL,SQL Server,Oracle就够用了,但是2020年,只会用这几个数据库就远远不够了,这些数据库都是关系型数据库,都诞生了几十年了,第一个商用版的Oracle数据库是在1979年发布的,第一个SQL Sever是1989年发布的,第一版的MySQL是1995年发布的,可以说,关系型数据库都算是经典数据库了。

关系型数据库使用频率非常高,在2020年11月的十大最流行数据库TOP10排行中,超过一半的都是关系型数据库,此外,还有一个文档数据库、一个键值数据库、一个宽表数据库、还有搜索引擎数据库,不过,从类型上来看,这还不够,AWS在公有云上提供的数据库类型就有八种。

如上图所示,AWS上一共有八个类别的数据库,基本涵盖了各种常见的数据库,除了关系型数据库,还有键值数据库、宽表数据库、文档数据库、内存数据库、图数据库、时序数据库以及分类账数据库,其中,关系型数据库种类最多,用的人也最多。

我们今天从最常用的关系型数据库开始,梳理一下AWS云上数据库,以及他们的主要用法。

关系型数据库RDS

AWS RDS是2009年发布的,它如今提供五种托管的关系型数据库,包括MySQL、MariaDB、PostgreSQL、Oracle和SQL Server,用户可以将数据库从本地迁移到云端数据库,AWS提供多个版本供选择,基本可以不用做任何修改将数据库迁移到云上。

这种托管的方案照顾了用户原有的使用习惯,便于用户迁移。云端关系型数据库用起来更省心,不用进行各种麻烦的运维工作。

普通用户只需点击几下鼠标就可以创建一个关系型数据库(RDS),以MySQL为例,可以选择数据库的版本,可以选择运行MySQL的主机的规格,可以配置存储类型(是SSD还是磁盘),在容量不够的时候还能自动扩容,还能设置多可用区备份实例,以确保安全。

另外,AWS还提供了一种自己独有的,专门为云环境而设计的关系型数据库——Amazon Aurora,它是2014年发布的一种兼容MySQL和PostgreSQL的关系型数据库,所谓兼容,就意味着MySQL和PostgreSQL可以无缝迁移到Amazon Aurora。

用户可以像刚才一样进行各种设置,也可以选择无服务器的模式,这种模式其实是AWS更推荐的方式,它可以不用设置主机、存储类型以及多可用区,只管用就可以了,不用关心性能和可用性的问题,也不用任何升级和维护的操作。

Amazon Aurora既满足了商业数据库的性能和可用性的要求,同时,又把成本降低到商业数据库的1/10,此外,AWS还做了性能上的优化,使得Amazon Aurora的吞吐量可以达到MySQL的5倍、PostgreSQL的3倍。

由于Aurora底层使用了分布式存储系统,可以将数据存储在三个不同可用区的数百个存储节点上,所以,它的扩展性很好。性能扩展性方面,三个可用区最多可设置15个低延迟读取副本来提升性能,能满足每秒数百万次的读取请求。在容量扩展性方面,它可以自动增加存储,每个实例最高增长到128TB。

在可用性方面和持久性方面,Amazon Aurora提供高于99.99%的可用性,可跨3个可用区复制 6份数据,并能将数据持续备份到 Amazon S3 中。它能以透明的方式从物理存储故障中恢复,实例故障转移用时通常不超过 30 秒。在安全性方面,AWS也做了很多特殊处理,比如有VPC网络隔离,还有各种加密操作。

Amazon Aurora另外一个特点是支持并行查询,可以同时运行分析查询和事务查询,Amazon Aurora可以跨成百上千个存储节点进行查询,多节点并行操作大大提升了查询的速度,而且,这一模式还能减少对于网络、CPU 和缓冲池资源的争夺,在并行查询时性能表现更稳定。

作为AWS最引以为傲的数据库产品,Amazon Aurora能与AWS平台的其他服务结合起来使用,能与 Amazon Athena(交互式sql查询服务 )和Amazon QuickSight(BI服务)结合使用,能与Amazon SageMaker(机器学习IDE工具)和Amazon Comprehend(自然语言处理)集成使用,结合起来使用,有助于快速构建数据洞察能力。

广州虎牙信息科技有限公司海外游戏直播业务后台负责人马昭表示:“AWS成熟稳定,是虎牙直播延伸国际业务的理想选择。”

虎牙直播在数据库后台中使用了Amazon Aurora,Amazon Aurora主要用来存储用户的静态基础信息,在使用中,Amazon Aurora的自动扩容,能够单独升级计算实例,5倍于MySQL的性能表现,10秒左右的快速故障转移,以及全球数据库功能都是虎牙直播非常认可的方面。

当然,只有Amazon Aurora是不够的,虎牙直播还用了Amazon DynamoDB来存储动态信息,包括支付、状态、好友关注关系等动态信息,Amazon DynamoDB的优势是有稳定的高性能、低延迟表现,特别是在当流量突发的时候更有价值,比如网红大主播上线的时候会引起流量暴涨,而Amazon DynamoDB都能始终如一地提供毫秒级性能,。

这里主要想谈的是Amazon Aurora,关于Amazon DynamoDB的介绍可以接着往下看。

Amazon DynamoDB键值数据库

Amazon DynamoDB是AWS在2012年发布的键/值和文档数据库,最早是为了处理亚马逊电商业务高峰期系统瓶颈问题,经过仔细分析后却发现原来70%的运营需求是键值型数据的查询,且只需要返回含有主键值的一行数据即可。于是AWS工程师们意识到,这样大规模的特定需求,需要一种不同类型的数据库,这就是非关系型数据为Amazon DynamoDB,最终被亚马逊电商验证的一个方案,可以说,它的出生和演进都与互联网业务的有着千丝万缕的联系。

Amazon DynamoDB属于NoSQL(No-Not Only-不只是SQL的数据库)数据库的一种,它每天可以应对超过十万亿次,峰值每秒超两千万次的请求,存储容量可以达到数个PB,非常适合移动、Web、游戏、广告技术、物联网等对查询速度要求很高的场景。而且,操作简单易上手,运维管理成本也低,比较受欢迎。

Amazon ElastiCache内存数据库

Amazon ElastiCache是2011年发布的一款托管内存数据库服务,它支持两种开源的内存数据库引擎:Redis和Memcached,用户最看重的就是内存数据库的高性能表现,它可以提供亚毫秒级的延时。

场景方面,它适合缓存用户的信息(比如用户会话),它适合用在电商平台,适合用来构建聊天室,适合用来创建游戏排行榜,总之是数据量特别大、延迟要求又高的那类场景,以互联网类应用最为典型。

Amazon ElastiCache在安全性方面也做了许多工作,比如,有用于集群隔离、静止/传输加密和HIPAA合规的VPC,以此保护用户的敏感信息。

扩展性方面也是优势所在,它可以通过创建副本进行在线扩展,而且可以扩展的很大,Amazon ElastiCache for Redis甚至可以扩展到320TB,Amazon ElastiCache for Memcached可以扩展到12TB。

高可用性方面,通过多可用区实现自动的故障切换,当主节点出现故障,Amazon ElastiCache在将副本提升为主节点时,能最大限度降低影响。

与直接使用开源的Redis和Memcached相比,Amazon ElastiCache提供了经过端到端软硬件优化功能,而且,有一帮AWS的专家在盯着开源软件可能出现的安全问题,如果有问题能尽早下手解决。

Amazon DocumentDB文档数据库

Amazon DocumentDB是2019年1月发布的,这是一款快速的、可扩展的、高可用的文档数据库,它是AWS开发的能兼容Amazon MongoDB的数据库,用Amazon MongoDB的人几乎可以无缝的切换到Amazon DocumentDB上来,可以复用原来的代码。

Amazon MongoDB存储的所谓文档其实是JSON数据,JSON是一种典型的半结构数据,它最大的特点是能适应字段不确定的场景,文件模型非常灵活,便于对应用程序进行快速调整和迭代,从而缩短开发时间,典型场景方面,比如在电商平台里它负责存储商品信息、买家评论等内容。

用户自建并管理Amazon MongoDB数据库还是挺麻烦的,在数据量上来之后的性能下降令很多人头疼,而Amazon DocumentDB托管服务就比较省心了,Amazon DocumentDB在性能上做了一些优化,可以达到现有托管的Amazon MongoDB的服务量的两倍。

Amazon DocumentDB架构设计上将存储和计算进行分离,两部分资源可以独立扩展,几分钟时间就可以在三个可用区内添加多达15个低延迟的只读副本,来轻松地把读取的容量增至每秒钟数百万个请求,无论数据的大小都能做到这点。

可用性方面,在设计上实现了四个9的可用性,可以在三个可用区里复制了六个数据副本。Amazon DocumentDB 采用一种有容错能力和自我修复能力的分布式存储系统,每个数据库集群可自动扩展至 64TB。

Amazon Keyspaces宽表数据库

2020年4月,AWS正式推出Amazon Keyspaces,它是一款兼容Apache Cassandra的数据库服务,原来Apache Cassandra用户可以无缝切换到新的Apache Keyspaces上。发布后不久,中国的两个区域(由光环新网运营的 AWS 中国(北京)区域和由西云数据运营的 AWS 中国(宁夏)区域)也很快都陆续上线了。

Apache Cassandra在2011年发布了第一个正式版本,它是一款典型的宽表数据库,数据模型基于谷歌的 Bigtable,存储则采用了亚马逊的 Dynamo 的分布式设计方案,AWS后来提供了Apache Cassandra的托管服务。

考虑到Apache Cassandra存在的一些问题,AWS修改了Apache Cassandra的代码,使得它能够作为一款托管的无服务器服务,让用户无需做任何管理操作,而且可以按照实际使用的资源付费,可以用它轻松构建一个每可处理数千个需求的,吞吐量和存储空间几乎无限的应用程序。

Amazon Neptune图数据库

Amazon Neptune是2018年5月发布的一款完全托管的图数据库服务,所谓图数据库跟图片没关系,它描述的是现实世界中个体和个体之间网络关系的数据结构,虽然有一些开源的实现方案,但AWS并没有直接采用,而是兼容了部分标准之后提供了专有服务。

图数据库的典型场景不难想象,它适合在社交网络上管理社交关系,实现好友推荐功能,在电商网站上猜你想买,推荐商品,此外还有知识图谱等场景,总之,是数据与数据有关联关系的应用。

Amazon Neptune提供了图数据库引擎,可以存储十亿个关系,并让查询的延迟降低到毫秒级,关联关系的查询其实很复杂,如果用关系型数据库处理这种数据的时候,数据库操作非常多,性能会下降的非常厉害,而Amazon Neptune的查询能将延迟降到毫秒级。

这里我们看一下Nike耐克的应用,Nike有一款应用,它需要记录运动员的技能、喜欢的运动、关注它的粉丝、以及粉丝喜欢的运动,数据相互间是有关系的,原本采用关系型数据库的话性能会很差,但当采用了Amazon Neptune以后,性能得到了非常大的提升,Nike有2500万个用户的关系存储在Amazon Neptune中。

Amazon TimeStream时序数据库

Amazon Timestream是2020年9月底发布的一款时间序列数据库服务,时间序列数据是按时间顺序记录的数据列,对时间序列进行分析可以找出样本内时间序列的统计特性和发展规律,构建时间序列模型,进行预测。

Amazon Timestream适用于物联网和运营应用程序,该服务每天可以存储和分析数万亿个事件,与关系型数据库相比,速度提高了1000 倍,而成本仅为关系数据库的十分之一。

作为一款托管服务,Amazon Timestream节省了管理时序数据的时间和成本,作为一款无服务器服务,它的性能和容量能自动伸缩,可以近乎无限地进行扩容,用户无需关注底层基础设施。

Amazon Timestream有数据分层策略,把近期数据保留在内存中,历史数据放在低成本存储层,Amazon Timestream的查询引擎可以对各种数据层的数据进行查询,此外,Amazon Timestream 内置了时间序列分析函数,帮助用户近乎实时地识别数据的趋势和模式。

此外,Amazon Timestream 还能与AWS IoT Core(用于 IoT 数据收集)、Amazon Kinesis 和 Amazon MSK(用于流式处理数据)、Amazon QuickSight(用于无服务器商业智能)和 Amazon SageMaker等服务集成来使用。

Amazon Quantum Ledger Database分类账数据库

Amazon Quantum Ledger Database (Amazon QLDB)是2019年9月发布的托管的分类帐数据库,可用于跟踪每次的应用程序数据更改记录,它会不断维护完整的,而且是可验证的更改历史记录,这些记录无法修改,类似于区块链。

应用场景方面,它适合用来记录企业的经济、金融历史,或者修改维护的历史,或者银行借贷,或者保险索赔数据。实际应用场景对于可扩展性有很高要求,这就是QLDB作为全托管的分类帐数据库的优势所在。

宝马使用QLDB构建了一款应用,这款应用负责追踪汽车数据的变化,记录哪些数据呢?买车之后,加油、年检、交通事故、维修记录、换轮胎等都会记录,而这些数据是不可修改的,数据本身非常可信,为汽车交易提供了非常有力的支撑,都知道二手车市场水非常深,这款应用能避免篡改记录让二手车买家蒙受损失。

结语

以上就是AWS提供的八种数据库服务的简要介绍,可以看出,类别还是非常全的。

对于比较经典的主流数据库,AWS提供了托管现有服务和自主开发新服务的模式,比如RDS,照顾用户原有应用资产。对于比较新的,没有特别有影响力的数据库类型,AWS则是以自己的实现方式为主,比如图数据库和分类账数据库。

传统的关系型数据库是最常用的类型,而新的数据库则更能灵活满足用户在新场景上的需求,AWS的数据库服务在性能上、可扩展性上、在安全和可用性上都有许多设计,能让用户把大部分注意力放在业务方面。

云上数据库以较低的成本为大部分用户输出了AWS优化过的最佳实践,为了方便用户使用这些服务,AWS提供了便捷的数据库迁移服务——Amazon Database Migration Service ,方便用户迁入迁出。

据资料显示,DMS在2019年对超过20多万个数据库进行了迁移,这个数字超过了2016年到2018年的总和,数据库向云迁移的速度在加快。