当有人问:数据库分哪几类?

我们通常的回答是:关系型的和非关系型的。

Image

这个答案没毛病,但是略显简单粗暴。如果深究一下,非关系型数据库还有很多种型。

有种分类方法,把数据库分成了 8 个大类:你没看错,是数据库库库库库库库库!

Image

为什么要分这么细呢?因为时代不同了,现代化应用对数据处理的要求越来越苛刻。

传统的关系型数据库,发展了几十年,遵从 ACID 原则,强关联、数据一致性,擅长事务处理。

Image

事务处理这个功能很重要,比如用银行卡转账,必须保证对方账户钱增加的同时,而你的账户对应地减少了,中间出了差错,数据库就要“回滚”。

Image

多少年来的金融级交易,都离不开关系型数据库的支撑,而企业大量的 ERP、CRM 系统,都是靠关系型数据库扛着的。

可是,随着社交、电商、IoT 等业务和应用蓬勃发展,数据尤其是非结构化数据爆发增长,传统关系型数据库有点独木难支。

Image

于是,数据库进入了八仙过海,各显神通的时代,不同的数据库在各自的岗位上,提供了独特的价值。

举个例子,在电商的场景下,用户的主要身份信息账号密码等,一般存在关系型数据库里。

但用户的“购物车”,有人放了 1 件商品,有的剁手党可能会放 100 件商品,用关系型数据库存储就很不灵活。

Image这时候,键值数据库就派上了用场,用“键值对”来存储用户的购物车信息,水平可以任意扩展。

再比如在交通和制造场景下,数据需要按照时间顺序进行存储,这里的时间不只是一个度量标准,不是一个字段,而是一个坐标的主坐标轴。

Image这时候,就需要时间序列数据库,有点像我们的常见的股票交易数据,横轴是时间,纵轴是不同时间下的所有数据。

再比如社交网络应用,需要快速查找某人与某人的关系。

Image

此时如果使用图数据库,可以快速 get 到结果,但是用关系型数据库,需要大量的查询时间,甚至超时。

总之,应用千差万别,数据丰富多彩,要想应用跑的爽,就要投其所好,选最合适的数据库。

而且如今,大多数现代应用,都不是单一类型数据库来支撑,往往众人拾柴,各干自己擅长的一部分。

所以,对于架构师来说,根据自家业务,把数据库选好、规划好很重要,同时,还要有 DBA 来配置和管理数据库。

想想就很头大!

有没有供应商,能够提供一揽子解决方案呢?还真有,那就是 Amazon Web Services (AWS) ,上面提到的 8 种类别的数据库,AWS 全部提供!Image

AWS 能提供的数据库类型和引擎太多,我们就挑几类来讲讲吧。

首先还是说关系型数据库,虽然数据库分类这么多,但站 C 位的还是“关系”,大多数系统的主数据都还是用关系型数据库。

AWS 的托管式 Amazon Relational Database Service (Amazon RDS) 服务,提供了多种引擎。

不管开发者习惯用哪种,商用的 Oracle、SQL Server,开源的 MySQL、MariaDB、PostgreSQL,在 AWS 上都能找到。

Image

同时,AWS 还提供了一套自家特色 RDS 方案,这就是著名的「极光」数据库——Amazon Aurora。

Image

Amazon Aurora 提供 MySQL 和 PG 两种兼容引擎,跨 3 个 AZ 最多提供 15 个读副本、6 份数据拷贝,跨区横向扩展读写,跨区复制。

“极光普照”之下,吞吐量是 MySQL 的 5 倍、PG 的 3 倍,成本却只有传统商业级数据库的十分之一。Image看到“3AZ”,是不是担心部署和管理很复杂?没关系,Amazon Aurora 是全托管的,所有操作,云上帮你全简化。

同时,Amazon Aurora 跟 AWS 上的机器学习、BI、分析类的组件可以深度集成,你甚至不需要专业的机器学习知识,用标准的 SQL 语句就能进行机器学习预测了。

Image

著名的虎牙直播,就采用了 Amazon Aurora 数据库解决方案,相对静态的信息,使用 Amazon Aurora 存储,动态的信息则使用 Amazon DynamoDB 存储。

Image

除了性能比 MySQL 好太多以外,故障恢复也是极速的,异常状态下,10s 内就能自动实现故障转移,终端用户无感知。

另外,虎牙直播的 Nimo TV 是出海业务,利用 AWS 全球数据库功能,可以就近部署,提升用户本地体验。

我们再来说说 AWS 上的其它非关系型数据库吧。

当下最流行的缓存数据库是 Redis 和 Memcached,AWS 提供 Amazon ElastiCache,兼容这两种引擎,为实时应用提供亚毫秒延迟。

Image

如果谈到文档数据库,大家肯定会对 MongoDB 很熟悉,AWS 的 Amazon DocumentDB 提供对 MongoDB 的兼容能力。

Image

不止于兼容,Amazon DocumentDB 比标准的 MongoDB 托管服务快两倍,支持自动故障转移,并在 3 个 AZ 上提供 6 份数据副本。

AWS 上的图数据库托管服务叫做 Amazon Neptune,可存储数十亿的“关系”,查询起来,延迟是毫秒级别的。

Image

Amazon Neptune 被广泛应用于社交网络、知识图谱、生命科学、IT 运维等领域。

还有宽表数据库 Amazon Keyspaces,分类账数据库 Amazon QLDB,以及刚刚上新的时序数据库 Amazon Timestream……

总之,只有想不到的,没有 AWS 做不到的。


讲到这里,我想大家对 AWS 云上数据库服务的类型和能力,大概都心中有数了。

这两年,我也看到越来越多本地部署的数据库,被云上数据库替代和“碾压”。

Image

那么,如果你也有了数据库上云的想法,如何才能方便、安全、快捷地把本地数据“搬”上云呢?

AWS 提供了一系列 DMS 服务:从线下到云上、从库到库、库结构转换……,数据复制可实现近乎 0 停机时间,以保障业务不中断,客户无感知。

Image

这种迁移服务靠谱不?Amazon 自己就是最好的成功案例。

亚马逊公司 100 多个业务团队,各种复杂的、在线的、高并发的业务,电商、广告、视频、游戏、支付,原来总共使用了 7500 多个甲骨文数据库,数据多达 75 PB。Image

如今,这些数据库全部被迁移、分流到 AWS 多种云数据库上了。

自己家的云数据库到底香不香?迁移后数据库成本降低 60%,管理工作减少了 70%,而对于重要的应用,性能提高 40%!

这就是活生生的云数据库最佳实践呀!


云上数据库库库库库库库库,八仙过海。AWS,就是那片云海!

Image