AWS - Amazon · 2020年12月23日

数据库,何时用Redshift,何时用Aurora?

恩,这个问题,其实要Database的种类讲起。

首先大家知道的DB,一般是MySQL、PostgreSQL、SQL Server等。

这类的数据库成为“关系型数据库”,也就是OLTP。它每一是一条记录。具体的意思大家自己查查吧。

关系型数据库的优点是可以非常快地找到“这个人”的“所有信息”,因为就一行。

但要是想开始查,有“多少人”,“怎么样”的时候,就会很慢。

一般这个时候,大家会用一个东西,叫index。将记录里的一项,做索引,加速查询。

其实你没意识到,当你加了一个索引的时候,其实你存的数据,是一

于是列数据库就不难理解了。这样的数据库是按存储所有数据。那么此时,”查询某一类“这样的需求就变得很快了。

Clickhouse就是这样的一个数据库,它做count()操作的速度大约是MySQL的几千倍。

也因此,列数据库特别适合做”分析“。

接着讲故事。随着网络的发展,移动应用和社交平台的推广,我们发现,所有的东西都被打上了”标签“。

要想知道你这个人,看你身上的”标签“即可。

一张图片,有”标签“,一次比赛成绩,还是”标签“。

于是key-value型数据库油然而生。

这类数据库特别简单,就是key-value对儿。给我个key,我返回给你value。

快得起飞,但存储的信息,必然没有行数据库和列数据库靠谱。

Redis就是一个key-value型数据库。因为它用内存,而不是用硬盘(硬盘只作为恢复时用),所以我一直把它当成Cache用。


OK,回到最开始的问题:什么时候用Redshift,什么时候用Aurora?

AWS RDS (包括Aurora)- 行数据库

AWS Redshift – 列数据库

AWS DynamoDB – Key-value型数据库

自己有答案了吧?

普通存储,或者存储完整信息,用RDS。

希望数据是用来做分析的,用Redshift。

数据仅仅是用来快速检索,并且更多地适用于移动应用的,用DynamoDB。

所以如果你发现有个需求是把RDS的数据灌入Redshift,那一定是准备调用个Lambda什么的来分析了。


最后多说一点Aurora。

Aurora是AWS自己做的(或者说自己封装的),用来替代MySQL和PostgreSQL的。

MySQL和PostgreSQL是开源的嘛……所以AWS自己封了Aurora。

就像Redis是开源的,然后AWS自己封了个ElasticCache……

用Aurora的好处是自己扩展以及自己备份。当然官网宣称的是他们更快(5倍于MySQL,3倍于PostgreSQL)。

但是我真的对Aurora自动备份特别满意。

尤其是备份,它自动将数据写到6个Volume里,然后存在S3上。

还有一个功能叫Fast local read,其实就相当于在Aurora本地加了Cache。

Aurora还支持serverless,相当于按需使用了。

我对Aurora不满的一点是时至今日(2020年12月),它还只停留在5.7……