![cover](https://img-blog.csdnimg.cn/e78c6336ed154fffbaefb11d6f59c319.png)
云原生数据库的到来
AWS云原生数据库Amazon MemoryDB
一、前言
1.1 何为云原生数据库?
云原生数据库?即「Cloud-Native Database Systems」。
云原生数据库是一种通过云平台进行构建、部署和分发的服务。作为一种云平台,云原生数据库以PaaS的形式进行分发,也经常被称作DBaaS;用户可以将该平台用于多种目的,例如存储,管理和提取数据。
1.2 为何云原生数据库?
传统数据库还是得在很大程度上依赖物理机器设备和服务器来运行和存储数据,而且还需要专业的DBA人员负责管理和运维,给企业带来了很大的人工和物资成本,并且因为人工操作不当或安全性等原因还可能引发一些生产故障,导致系统崩溃或者数据丢失,造成不可估量的损失和无法挽回的后果。云原生数据库就应运而生了,它很好地避免和解决了上述因传统数据库本身的缺陷带来的一系列问题。亚马逊云科技在云原生数据库方面的成果遥遥领先。
亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750小时;Amazon Dynamo DB 25GB存储容量 永久免费。
二、传统内存缓存数据库Redis
2.1 传统非关系型数据库Redis
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
2.1.1 Redis 与其他 key - value 缓存产品有以下三个特点:
-
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
-
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
-
Redis支持数据的备份,即master-slave模式的数据备份。
2.1.2 Redis 优势
-
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
-
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
-
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
-
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
2.1.3 Redis的缺点:
-
缓存和数据库双写一致性问题
一致性的问题很常见,因为加入了缓存之后,请求是先从Redis 中查询,如果Redis 中存在数据就不会走数据库了,如果不能保证缓存跟数据库的一致性就会导致请求获取到的数据不是最新的数据。
-
缓存的并发竞争问题
并发竞争,指的是同时有多个子系统去set 同一个key值。
-
缓存雪崩问题
缓存雪崩,即缓存同一时间大面积的失效,这个时候又来了一波请求,结果请求都怼到数据库上,从而导致数据库连接异常。
-
缓存击穿问题
缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。
2.2 Redid及传统非关系型数据库的发展趋势
2.2.1 Redis历史回顾
Redis发展至今已历经7个大版本,而每个大版本都有大量的新特性产生。例如从3.0开始支持cluster集群模式;4.0开发的lazyfree和PSYNC2解决了Redis长久的大key删除阻塞问题及同步中断无法续传的问题;5.0新增了stream数据结构使Redis具备功能完整的轻量级消息队列能力;6.0更是发布了诸多企业级特性如threaded-io、TLS和ACL等,大幅提升了Redis的性能和安全性。
2.2.2 多模服务进入爆发期
Redis是一直贴着用户使用发展起来的,它如此受欢迎主要因为两个特点,极高的性能以及丰富、方便使用的数据结构,这些简单好用的数据结构能够大幅度降低开发业务复杂度。
我们可以看到,以Redislabs为代表的厂商正在大力的丰富Redis的数据结构(modules),如RedisSearch、Redis-Json、RedisGraph、RedisTimeSeries和RedisBloom等。
同样的,阿里云内存数据库Tair很早就在研发各类增强数据结构和模块,目前我们在公共云Tair服务中提供的商业化扩展型数据结构比Redislabs提供的更多,部分模块功能更强,有兴趣可参见文档(本文末尾参考资料)。
目前已有大量云上用户在利用Tair增强型数据结构来构建代码,提高开发效率,甚至完成此前难以完成的工作。2022年是一个Redis扩展结构的爆发年,业内已经渡过接纳期,进入高速发展阶段。无论是Tair还是Redis,我们相信不断丰富的数据结构能够让它们走的更远,从缓存演变为高性能的计算型内存数据库,突破、并解决更多场景问题。
2.2.3 一致性能力上的发展
落盘一致性和副本一致性是使用数据库绕不开的两个话题。长期以来许多人对Redis的应用场景仅仅认定为缓存(尤其是国外用户)。Redis自诞生之初便支持持久化机制RDB和AOF,并且AOF还提供了不同级别的持久化语义:如appendfsync采用最高级别always时可以保证数据完全落盘不丢失,具备与传统数据库一样的强落盘一致性。 在多副本一致性上,主要是指主备一致性上,原生的Redis仍旧采用异步复制,数据修改操作只要在本地执行完成就会返回结果,相比于其他数据库没有提供副本间数据强一致的语义。这也限制了Redis的使用场景,在对数据可靠性有极高要求的用户(例如金融行业,和传统行业)中还没有被完全接纳。
三、亚马逊的云原生数据库
3.1 AWS 云数据库
亚马逊云原生数据,即AWS云数据库是一种使用完全托管式专用数据库实现数据现代化的形式的基础设施。
3.1.1 选择合适的专用引擎
构建适合您具体需求的用例驱动、高度可扩展的分布式应用程序。AWS 提供超过 15 个专用引擎来支持各种数据模型,包括关系、键值、文档、内存、图、时间序列、宽列和分类账数据库。
3.1.2 完全托管式数据库
将您的团队从服务器调配、打补丁和备份等耗时的数据库任务中解放出来。AWS 完全托管式数据库服务提供持续监控、自我修复存储和自动扩展,以帮助您专注于应用程序开发。
3.1.3 获得规模性能
随着您应用程序的增长,从小规模开始并进行扩展,使用比流行的替代方案快 3-5 倍的关系数据库,或为您提供微秒到亚毫秒延迟的非关系数据库。轻松匹配您的存储和计算需求,通常无需停机。
3.1.4 可信赖的高可用性和安全性
支持多区域、多主复制,并提供具有多个安全级别的完整数据监督,包括网络隔离和端到端加密。AWS 数据库为业务关键型企业工作负载提供所需的高可用性、可靠性和安全性。
3.2 AWS的免费云数据库产品
在云计算代价和门槛如此高昂的当下,AWS为广大用户提供了一系列的免费体验产品,大大降低了用户使用AWS的门槛。
点击如下链接,立马体验官方免费产品:
回看人类历史上每一次技术跨越,生产力变革永远不会缺席。发展了50余年的“数据库”软件,它的下一个必然变革方向——“云原生数据库”也已经悄然走到了第十个年头。 未来十年,云原生数据库领域的创新将远远超越过去十年。我们究竟应该从怎样的视角审视过去的技术积累,并积极为未来的技术变革浪潮作好准备?本场在线大会将为您深度解读云原生数据库的最佳实践。
四、AWS系列云数据库产品
亚马逊云科技提供 15 个(关系和非关系)数据库引擎(还会增加),可满足任何应用程序的需求。用户可根据自身的业务和需要选择如下任意产品。
Amazon Aurora 是一种与 MySQL 和 PostgreSQL 兼容且专为云构建的关系数据库,兼具商业级数据库的性能和可用性,但成本只有它的十分之一。
Amazon RDS 让您可以在云中设置、运行和扩展关系数据库,同时支持六个常用数据库引擎,包括 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 和 SQL Server。
Amazon Redshift 是最受欢迎且增长最快的云数据仓库,能够针对 PB 级结构化数据运行复杂的分析查询,以及直接针对 S3 中存储的 EB 级数据运行 SQL 查询。
键值:
Amazon DynamoDB 是一种键值数据库,可以在任何规模的环境中提供延迟不到 10 毫秒的性能、每天处理超过 10 万亿请求,并支持每秒超过 2000 万个请求的峰值。
文档:
Amazon DocumentDB(兼容 MongoDB)是一种快速、可扩展、高度可用且完全托管的文档数据库服务,支持 MongoDB 工作负载。
内存中:
Amazon ElastiCache 提供完全托管的 Redis 和 Memcached,让您可以无缝部署、运行和扩展常见的开源、兼容内存中数据存储。
Amazon MemoryDB for Redis 是一种持久的内存中数据库服务,可提供超快的性能。它专为具有微服务架构的现代应用程序而构建。
图形:
Amazon Neptune 是一种快速、可靠且完全托管的图形数据库服务,可帮助您轻松构建和运行使用高度互连数据集的应用程序。
时间序列: Amazon Timestream 是一种快速、可扩展且完全托管的时间序列数据库服务,适用于 IoT 和运营应用程序,使用该服务每天可以轻松存储和分析数万亿个事件,其成本仅为关系数据库的十分之一。
分账类:
Amazon Quantum Ledger Database (QLDB) 是一种完全托管的分类账数据库,提供了一个透明、不可变、可以加密方式验证的事务日志。
五、Amazon MemoryDB for Redis
随着用户对Redis的应用范围的扩大,与此同时对于容量、成本和数据可靠性的需求也在不断提升,这些也逐渐成为了衡量Redis企业级能力的重要指标。各大厂商和开源产品也都在构建这些能力上提出了许多解决方案。
5.1 Amazon MemoryDB for Redis 的架构
Amazon MemoryDB for Redis 的思路是基于类似Aurora的共享存储概念,把日志存放在远端共享存储中,同时内存中仍然保留Redis原有的结构。通过这种方式提升数据的持久化一致性,同时也保证了数据读取的延时和吞吐;而缺点则同样因为日志保存在远端,写入性能严重下降(仅有ElastiCache也即Redis社区版的15%~25%,该数据来自AWS官方评测)。在主备一致性上,由于直接采取日志的物理复制,所以主备一致性近似接近落盘一致性。
值得一提的是原来AOF rewrite这种压缩(compaction)引起的开销也因为在远端做掉而规避掉,因此是一种很彻底的云原生解法。而AWS的此款产品正好运用了这项技术来解决这个问题。
六、总结
MemoryDB 与 Redis 兼容,这是一个受欢迎的开源数据存储,使您能够使用他们目前已经使用的同样灵活友好的 Redis 数据结构、API 和命令快速构建应用程序。使用 Memory DB,您的所有数据都存储在内存中,这使您能够实现微秒读取和单位数毫秒的写入延迟和高吞吐量。MemoryDB 还使用多可用区事务日志跨多个可用区 (AZ) 持久存储数据,以实现快速故障切换、数据库恢复和节点重启。
Memory DB 既具有内存中的性能和多可用区持久性,可用作微服务应用程序的高性能主数据库,从而无需分别管理缓存和持久数据库。
更多推荐
所有评论(0)