Amazon Aurora 和 RDS 选哪个?工程师视角八大关键维度全方位对比指南

2024年 1月 26日 104.3k 0

在 2023 年 Gartner 最新的魔力象限评估中,AWS 再次被评为云数据库管理系统的顶级厂商之一。AWS 在在线事务处理(OLTP)的关系型数据库领域提供了两个主要产品:

- Amazon RDS(关系型数据库服务),这是 AWS 于 2009 年 10 月 22 日推出的产品,可能是全球规模最大的数据库服务之一。

- Amazon Aurora,于 2014 年 11 月 12 日推出,作为 RDS 的高定版,它以无与伦比的高性能和全球范围内的高可用性著称,兼容 MySQL 和 PostgreSQL 协议。

当工程团队开始使用 AWS 时,他们首要的任务之一就是选择 Aurora 还是 RDS 作为他们的主要数据库系统(如果他们选择使用 NoSQL 数据库,那么他们则需要在 MongoDB 和 DynamoDB 之间做选择)。接下来,我们将以工程师的视角来对比以下几个方面:

  1. 支持的数据库类型
  2. 系统架构
  3. 兼容性
  4. 性能表现
  5. 系统弹性
  6. 高可用性
  7. 定价策略
  8. 推荐配置方式

支持的数据库类型
RDS 支持包括 MySQL、PostgreSQL、MariaDB、SQL Server、Oracle 和 Db2 在内的所有主流关系型数据库。而 Aurora 则支持 MySQL 和 PostgreSQL 这两种数据库。在选择数据库版本方面,使用 RDS 时,您可以自由选择各种上游的数据库版本。但如果使用 Aurora,您只能选择一些特定的版本,这些版本是基于 Aurora 特定版本的,对应的也是某几个上游版本。系统架构RDS 就是把主流的数据库搬到云平台上。相对而言,Aurora 则是一种「云原生」数据库服务。之所以说它是「云原生」的,是因为 Aurora 充分利用了云环境的特性,例如通过将计算和存储分离,以及利用 Amazon S3 (https://aws.amazon.com/s3/) 进行数据的持久化保存。这种创新的设计极大地提升了数据库的性能、高可用性和扩展能力。
兼容性
Aurora 和 RDS 作为云数据库,都存在一些共同的限制:- 您只能使用半超级用户 (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.MasterAccounts.html)。- 您无法访问数据库服务器的文件系统。对于 MySQL 来说,这意味着您只能使用 LOAD DATA LOCAL 从本地文件系统导入数据,而不能使用 LOAD DATA 从服务器文件系统导入数据。虽然 Aurora 是一项专有技术,但它与普通 MySQL PostgreSQL 的主要区别在于存储引擎层。另一方面,决定大多数面向用户行为的服务器层几乎完全相同。例如,MySQL 的 Aurora 仅支持 InnoDB,而 RDS 支持 MyISAM 等旧引擎(不过,如果您启动一个新项目,无论如何都不会使用 MyISAM 引擎)。话虽如此,Aurora 的代码库与标准 MySQL Postgres 相比,与 RDS 的差异更大,因此您应该预期 AWS 团队在引入最新的上游更新方面会有更多的延迟。例如,Aurora PostgreSQL 比 RDS 晚了两个月才添加了当红的 pgvector 扩展。
性能表现根据官方网站 (https://aws.amazon.com/rds/aurora/features/),Aurora 的吞吐量是 MySQL 的 5 倍,是 PostgreSQL 的 3 倍。
这个测试甚至 (https://dev.to/aws-heroes/amazon-aurora-is-now-60-times-faster-than-rds-for-mysql-really-3c0e) 表明,Aurora 的性能是 RDS 的 60 倍。Aurora 在写入性能上表现更佳,主要原因是它在处理数据时只发送重做日志到远端存储服务,避免了其他在事务提交过程中可能发生的写入操作,例如广为人知的 doule-write buffer 问题。得益于其基于日志的架构,Aurora 在读取操作的可扩展性方面也更出色,能够支持多达 15 个读副本。相比之下,RDS 最多只能支持 5 个读副本,因为传统的流式复制技术会对主数据库造成较大的性能影响。此外,在写入密集的负载条件下,Aurora 的复制延迟也大大降低了。RDS 使用的是 EBS 存储,其磁盘性能会根据不同的存储类型 (https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html) 而有所差异。总体来说,Aurora 在性能上显著优于 RDS。但是,您仍然需要针对自己的实际工作负载进行具体的性能测试。
系统弹性RDS 的弹性相对有限,如果您选择了 gp2 SSD 存储,它能提供一定的性能突增 (https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_Storage.html),但基本上就这些了。标准 Aurora 可以快速提供读副本,但除此之外,它不提供开箱即用的弹性。Aurora Serverless 版本,特别是 Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html),则在弹性伸缩方面做得非常出色,能够根据需要灵活调整计算资源,这对于电商等需要应对不同时间段不同负载的场景非常适用。
高可用性RDS 提供多可用区(multi-AZ)高可用(HA)设置,SLA 高达 99.95%,而 Aurora 则提供高达 99.99% 的 SLA。由于其基于日志的架构,Aurora 可以更快地 failover。特别是在写入操作较多的情况下,由于复制延迟的问题,RDS 在故障切换上可能会遇到更多的困难。Aurora 还拥有全球数据库功能 (Aurora Global Database) (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html),可以实现低延迟的全球读取和跨 AWS 区域的灾难恢复。
定价策略如果您按照 AWS 向导选择生产模板(8c64g r6g.2xlarge + multi-AZ HA),您会发现 Aurora 的价格比 RDS 便宜得多。好得令人难以置信。

然而,需要注意的是 Aurora 还会对数据的 I/O 操作收费,而这通常不包含在初步的价格预估中。这一点在很多客户收到高额 AWS 账单时令他们感到意外。这种不确定的成本曾是团队最初采用 Aurora 时的一大顾虑。到了 2023 年,Aurora 通过推出 I/O-优化版来将 I/O 成本纳入存储费用,解决了这一问题。除此之外,只有 RDS 提供免费使用计划和较低配置的数据库实例,起步配置为 2c1g t3.micro。而标准的 Aurora 最低配置是 2c16g r5.large,能够支持 burst 的类别则从 2c4g t3.medium 开始。Aurora Serverless 允许设置最低 0.5 ACU(应用计算单元),其中 1 ACU 提供 2 GiB 内存及相应的计算和网络资源。总之,您应该使用 AWS 定价计算器 (https://calculator.aws/) 进行成本估算,使用如 Vantage (https://www.vantage.sh/) 这样的专业工具来监控数据库成本也是一个不错的选择。
推荐配置方式在能力方面,AWS Aurora 几乎在每个方面都胜过 RDS。由于 Aurora 是 AWS 与其他云服务商区别开来的关键因素,AWS 也在 Aurora 上投入了更多资源。尽管 Aurora 大多数情况下与 MySQL PostgreSQL 兼容,但它通过提供无与伦比的性价比,创造了另一种 evndor -lock-in。对于初创企业或小型企业,Aurora 的价格仍然较高,而 RDS 是一个更经济的解决方案:对于处于成长阶段的企业来说,Aurora 更适合,Aurora Serverless 为成本优化提供了额外的灵活性:
通常情况下,您应该从 RDS 开始,随着业务的增长再考虑迁移到 Aurora。AWS 为从 RDS 到 Aurora 的迁移提供了详尽的指南 (https://aws.amazon.com/getting-started/hands-on/migrate-rdsmysql-to-auroramysql/),可以实现几乎零停机时间的迁移。

确定数据库产品后,剩下的任务就是制定数据库开发工作流程:

  • 开发人员如何将变更从开发阶段传播到生产阶段?

  • 如何让数据库人员高效地对 SQL 变更进行同行评审?或者使用自动 SQL 检查更好?

  • 如何执行数据访问策略以符合 PII 合规性?

如果您正在考虑这些问题,请查看 Bytebase。它是一款多合一工具,可集中异构数据库的所有人工到数据库操作。

代码全开源!数据库工具届的瑞士军刀,替代多款工具的一站式数据库开发平台

告别手搓!Postgres 一站式测试数据生成方案

浪费出奇迹的国产数据库们
生产环境如何部署 Bytebase

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论