当有人问:数据库分哪几类?
我们通常的回答是:关系型的和非关系型的。
这个答案没毛病,但是略显简单粗暴。如果深究一下,非关系型数据库还有很多种型。
有种分类方法,把数据库分成了8个大类:你没看错,是数据库库库库库库库库!
为什么要分这么细呢?因为时代不同了,现代化应用对数据处理的要求越来越苛刻。
传统的关系型数据库,发展了几十年,遵从ACID原则,强关联、数据一致性,擅长事务处理。
事务处理这个功能很重要,比如用银行卡转账,必须保证对方账户钱增加的同时,而你的账户对应滴减少了,中间出了差错,数据库就要“回滚”。
多少年来的金融级交易,都离不开关系型数据库的支撑,而企业大量的ERP、CRM系统,都是靠关系型数据库扛着的。
可是,随着社交、电商、IoT等业务和应用蓬勃发展,数据尤其是非结构化数据爆发增长,传统关系型数据库有点独木难支。
于是,数据库进入了八仙过海,各显神通的时代,不同的数据库在各自的岗位上,提供了独特的价值。
举个例子,在电商的场景下,用户的主要身份信息账号密码等,一般存在关系型数据库里。
但用户的“购物车”,有人放了1件商品,有的剁手党可能会放100件商品,用关系型数据库存储就很不灵活。
这时候,键值数据库就派上了用场,用“键值对”来存储用户的购物车信息,水平可以任意扩展。
再比如在交通和制造场景下,数据需要按照时间顺序进行存储,这里的时间不只是一个度量标准,不是一个字段,而是一个坐标的主坐标轴。
这时候,就需要时间序列数据库,有点像我们的常见的股票交易数据,横轴是时间,纵轴是不同时间下的所有数据。
再比如社交网络应用,需要快速查找某人与某人的关系。
此时如果使用图数据库,可以快速get到结果,但是用关系型数据库,需要大量的查询时间,甚至超时。
总之,应用千差万别,数据丰富多彩,要想应用跑的爽,就要投其所好,选最合适的数据库。
而且如今,大多数现代应用,都不是单一类型数据库来支撑,往往众人拾柴,各干自己擅长的一部分。
所以,对于架构师来说,根据自家业务,把数据库选好、规划好很重要,同时,还要有DBA来配置和管理数据库。
想想就很头大!
有没有供应商,能够提供一揽子解决方案呢?
还真有,这就是AWS,上面提到的8种类别的数据库,AWS全部提供!
AWS能提供的数据库类型和引擎太多,我们就挑几类来讲讲吧。
首先还是说关系型数据库,虽然数据库分类这么多,但站C位的还是“关系”,大多数系统的主数据都还是用关系型数据库。
AWS的托管式RDS服务,提供了多种引擎。
不管开发者习惯用哪种,商用的Oracle、SQL Server,开源的MySQL、MariaDB、PostgreSQL,在AWS上都能找到。
同时,AWS还提供了一套自家特色RDS方案,这就是著名的「极光」数据库——Amazon Aurora。
Aurora提供MySQL和PG两种兼容引擎,跨3个AZ最多提供15个读副本、6份数据拷贝,跨区横向扩展读写,跨区复制。
“极光普照”之下,吞吐量是MySQL的5倍、PG的3倍,成本却只有传统商业级数据库的十分之一。
看到“3AZ”,是不是担心部署和管理很复杂?没关系,Aurora是全托管的,所有操作,云上帮你全简化。
同时,Aurora跟AWS上的机器学习、BI、分析类的组件可以深度集成,你甚至不需要专业的机器学习知识,用标准的SQL语句就能进行机器学习预测了。
著名的虎牙直播,就采用了Aurora数据库解决方案,相对静态的信息,使用Aurora存储,动态的信息则使用DynamoDB存储。
除了性能比MySQL好太多以外,故障恢复也是极速的,异常状态下,10s内就能自动实现故障转移,终端用户无感知。
另外,虎牙直播的Nimo TV是出海业务,利用AWS全球数据库功能,可以就近部署,提升用户本地体验。
我们再来说说AWS上的其它非关系型数据库吧。
当下最流行的缓存数据库是Redis和Memcached,AWS提供ElastiCache,兼容这两种引擎,为实时应用提供亚毫秒延迟。
如果谈到文档数据库,大家肯定会对MongoDB很熟悉,AWS的DocumentDB提供对MongoDB的兼容能力。
不止于兼容,DocumentDB比标准的MongoDB托管服务快两倍,支持自动故障转移,并在3个AZ上提供6份数据副本。
AWS上的图数据库托管服务叫做Neptune,可存储数十亿的“关系”,查询起来,延迟是毫秒级别的。
Amazon Neptune被广泛应用于社交网络、知识图谱、生命科学、IT运维等领域。
还有宽表数据库Amazon Keyspaces,分类账数据库Amazon QLDB,以及刚刚上新的时序数据库Amazon Timestream……
总之,只有想不到的,没有AWS做不到的。
讲到这里,我想大家对AWS云上数据库服务的类型和能力,大概都心中有数了。
这两年,我也看到越来越多本地部署的数据库,被云上数据库替代和“碾压”。
那么,如果你也有了数据库上云的想法,如何才能方便、安全、快捷地把本地数据“搬”上云呢?
AWS提供了一系列DMS服务:从线下到云上、从库到库、库结构转换……,数据复制可实现近乎0停机时间,以保障业务不中断,客户无感知。
这种迁移服务靠谱不?Amazon自己就是最好的成功案例。
亚马逊公司100多个业务团队,各种复杂的、在线的、高并发的业务,电商、广告、视频、游戏、支付,原来总共使用了7500多个甲骨文数据库,数据多达75PB。
如今,这些数据库全部被迁移、分流到AWS多种云数据库上了。
自己家的云数据库到底香不香?迁移后数据库成本降低60%,管理工作减少了70%,而对于重要的应用,性能提高40%!
这就是活生生的云数据库最佳实践呀!
云上数据库库库库库库库库,八仙过海。
AWS,就是那片云海!