AWS有哪6款数据库呢?数据库
确切地说,我认为是7款数据库:服务器
* RDS架构
* RDS-Aurora并发
* Redshift高并发
* DynamoDB性能
* Neptune区块链
* Timestream大数据
* QLDB网站
(RDS和RDS-Aurora有些人认为是同款数据库。)日志
这几款数据库真是各有神通,几乎把全部数据库相关的应用场景都捕捉到了。
接下来逐一介绍下:
RDS (Relational Database Service)
RDS顾名思义就是“关系型数据库”。这里其实亚马逊移植了市面上经常使用的几款数据库,作成了“云”的版本给客户,包括:Oracle,MySQL, MS SQL, MariaDB, PostgreSQL。
这么作的好处,就是客户教育成本低,迁移成本低,用本身熟悉的数据库,又享受了云端的高可用和高性能。
这些好像没啥,很“正常”,还不够“丧心病狂”,可是接下来的几款数据库产品,AWS就要开挂了。
RDS-Aurora
虽说,Aurora是挂在RDS下面的一个数据库产品,可是我认为它彻底是不同的。不能和其它RDS数据库相提并论。
数据库的一个核心问题就是解决“高并发”,其中包括:高并发的“读”,和高并发的“写”。(好比一个电商平台的网站,对商品的查询都是读,下订单则都是写了。)
你可能会说,高并发的“读”不难处理啊!可多几个数据部分不就好了?好比,一份数据放在10个服务器上--对于读,来讲,是这样的。
可是,若是系统里面有不少数据副本的时候,高并发的“写”就不能有效的同步到全部的副本上了--因此,高并发的读写其实是一对儿矛盾的综合体。
Aurora经过“日志即数据”的概念,把“数据引擎”和“数据存储”进行了有效的分割,从而达到了空前的高并发读写机能。
传统的普通数据库服务,或者普通的自建数据库机构,“写”只能发生在一个“主”数据上,而后“主”再把本身的数据同步给其它副本。Aurora则不一样,“写”能够发生在任何一个可用区上。Aurora的架构使用了3个可用区,每一个可用区有2个副本,也就是一共6个副本,这6个副本均可以进行读写。极大的弥补了,传统数据库对高并发的瓶颈。这是否是很“丧心病狂”?这是如何作到的?!
细节,在这里就不赘述了,有兴趣的话,能够咨询咱们的架构师~
高并发的读写是典型的OLTP(On-Line Transaction Processing联机事务处理过程)中发生的场景。那么对于OLAP (On-Line Analytical Processing 在线分析过程),AWS提出了什么产品呢?
Redshift
和OLTP场景下,数据库须要支持高并发读写不一样,OLAP场景下数据库读写频率很低,数据库须要进行大量的聚合计算:数据量大,计算量也大。(好比,一天结束以后,咱们须要对今天的用户行为进行分析,全部用户行为数据多是几个TB。)
这时候,就须要Redshift出场了。Redshift提及来也是关系型数据库,可是它和RDS们有个本质的不一样,它不是按“行”来存储数据的,而是按“列”来的。不只如此,它还按照“列”,对数据进行了排序!基本上这就是为了作“聚合”而诞生的数据库啊!并且按列聚合的数据库很方便压缩,Redshift能够处理PB级数据哦!!!
你说这就能够了吧:传统的关系型数据库,AWS有了;OLTP数据库有了;OLAP数据库也有了。AWS以为还不够!
DynamoDB
上面的都是关系型数据库。DynamoDB是AWS提供的一款“非关系型数据库”,特别以“键值存储”为核心。能够高效的进行大数据/大文件的快速读取。
若是你是游戏行业/医疗行业/影视娱乐行业有大文件须要读取的话,那么你有福了。:)
Neptune
关系型数据库有了,非关系型也有了!还不够吗?对于亚马逊来讲,固然不够!
AWS又推出了“图数据库”。在如今这个社交应用(大数据相关性)横行的年代,没有图数据库,取一个简单的人际关系,用“关系型数据库”真是要累死的。举2个简单的例子:
1. 咱们想知道用户A和用户B是几度好友?若是A和B是直接好友也就罢了,用关系型数据库Join一次也就好了。可是,万一是10度好友呢?总不能Join 10次吧。关键是,若是不知道是几度好友,难道要无限的Join下去吗?
2. 咱们的物流系统报告,北京到上海的一趟货车延迟了,那有多少用户会受到影响呢?一趟车可能影响10条物流链路?影响50个城市?影响2000个用户?估计咱们须要把系统里面全部的数据都关联查询一遍才能有个结论,成本过高了。
在上面的场景里面(也就是不断的大量的Join出现的时候),图数据库就是一个利器了。
这都已经好几款数据库了,还不够吗?AWS以为还不够。2018年的时候,它竟然同时发布了两款新数据库!!!
我真是要给这家公司跪了。
Timestream
顾名思义,Timestream是和时间相关的数据库。由于不少对数据的查新都是以时间段为基础的。Timestream就是针对这个场景的。
QLDB
QLDB的全称是Quantum Ledger Database。它的应用场景也很好理解,最适合的场景是“记帐本”。“帐本”是不能被更改的,每一笔记录都不能被改动,被忠实的记录下来,已被查询。QLDB就应运而生了。是否是有点儿“区块链”的意思?只不过QLDB是有中心的。