AuroraとRDSの違いを一覧表でまとめてみた
こんにちは、つくぼし(tsukuboshi0755)です!
AWSでリレーショナルデータベースを使用する際に、多くの場合で一度はAuroraとRDSのどちらを使うか検討する事になると思います。
そこで今回は、AuroraとRDSのポイントを比較しやすいように、機能面と料金面の2点において、ざっくり一覧表で簡単にまとめてみます!
機能比較表(2023/4現在)
まずはAuroraとRDSについて、機能面から一覧表でまとめてみます。
比較項目 | Aurora | RDS |
---|---|---|
データベースエンジン | Aurora MySQL(MySQLと互換性のあり),Aurora PostgreSQL(PostgreSQLと互換性のあり) | MySQL,PostgreSQL,MariaDB,Oracle,Microsoft SQL Server |
MySQLエンジンバージョン | 5.7/8.0 | 5.7/8.0 |
PostgreSQLバージョン | 11/12/13/14/15 | 10/11/12/13/14/15 |
選択可能なインスタンスクラス | メモリ最適化クラス(rクラスを含む),バースト可能クラス(tクラスを含む) | 標準クラス(mクラスを含む),メモリ最適化クラス(rクラスとxクラスを含む),バースト可能クラス(tクラスを含む) |
ストレージ種別 | Auroraストレージ(固定) | EBSボリューム(gp2/gp3/io1/マグネティックから選択) |
ストレージの手動割り当て | 設定不可 | 設定可能 |
ストレージの自動スケーリング | 自動設定 | 設定可能 |
マルチAZ | 設定可能(マルチAZ配置) | 設定可能(マルチAZ DBインスタンス or マルチAZ DBクラスター) |
読み取り専用レプリカのスケーリング | 最大15台配置可能(Auroraレプリカ) | 最大15台配置可能(リードレプリカ) |
DevOps Guru有効化 ※1 | 設定可能 | PostgreSQLのみ設定可能 |
フェイルオーバー優先順位 ※2 | 設定可能 | 設定不可 |
自動バックアップ有効化 | 自動設定 | 設定可能 |
バックアップ保持期間(日数) | 1-35 | 0-35 |
バックトラック有効化 ※3 | 設定可能 | 設定不可 |
フェイルオーバー時間目安 ※4 | 通常 30 秒以内 ※5 | 通常 60-120 秒間 |
RPO(ポイントインタイムリカバリ使用) | 最大 5 分 | 最大 5 分 |
AuroraはMySQLとPostgreSQLのみ使用可能なのに対し、RDSはMariaDB,Oracle,Microsoft SQL Serverもデータベースエンジンとして使用可能です。
またMySQLとPostgreSQLに関しても、Auroraと比較して、RDSの方が使用できるエンジンバージョンが若干広めです。
一方で、フェイルオーバー優先順位、バックトラックといった機能はAuroraのみ使用できる一方で、RDSでは使用できません。
加えて以下でもご紹介されている通り、Auroraのみで使用できる独自機能が他にも多数あります。
02_Amazon Aurora MySQL_PostgreSQL 独自機能のご紹介.pdf
またフェイルオーバー時間については、RDSよりAuroraの方が短時間になる傾向があります。
上記の独自機能を使ってみたいや、フェイルオーバー時間をなるべく短縮したい方は、Auroraを選択する事になるかなと思います。
※1 DevOps Guruについては以下をご参照ください。
(2023/4/14)現在では、RDSでもPostgreSQLのみDevOps Guruを使用できるようになっております。
※2 フェイルオーバー優先順位については以下をご参照ください。
※3 バックトラックについては以下をご参照ください。
(2023/4/17)フェイルオーバー時間目安について追記しました。
※4 フェイルオーバー時間目安については、以下のドキュメントに記載があります
Amazon RDS DB インスタンスがフェイルオーバーした理由を特定する | AWS re:Post
停止時のデータベースアクティビティに応じて、フェイルオーバーは通常 60~120 秒間続きます。
フェイルオーバーは開始から終了まで通常 30 秒以内に完了します。
※5 Auroraについては、以下に記載がある追加設定を用いる事で、さらに高速なフェイルオーバーを実現可能です。
- Aurora MySQL
- Aurora PostgreSQL
料金比較表(2023/4現在)
続いてAuroraとRDSについて、料金面からでも一覧表でまとめてみます。
東京リージョンで、データベースエンジンがMySQL、インスタンスタイプがdb.r6g.largeの場合で考えます。
なおRDSはストレージタイプによって使用料金が異なりますが、今回は代表してgp3を上げてみます。
比較項目 | Aurora | RDS |
---|---|---|
インスタンス料金 | 0.313USD/時間 × インスタンス数 | 0.255USD/時間 × インスタンス数 |
ストレージ料金(1GB当たり) | 0.12USD/月 | 0.138USD/月 × インスタンス数 |
I/O料金(100万リクエスト当たり) | 0.24USD | - |
IOPS料金(1IOPS当たり) | - | 0.024USD/月(ベースラインを超えた分のみ) |
スループット料金(1MB秒当たり) | - | 0.096USD/月(ベースラインを超えた分のみ) |
なおgp3のIOPS及びスループット料金の計算の仕方には少し癖があります。
RDSでgp3を使用する場合の計算方法の詳細は以下をご覧ください。
それでは上記を踏まえた上で、実際のAWSで使用するような構成で比較してみましょう。
今回は通常使用されるマルチAZ構成を実現するために、プライマリインスタンスに加えて、Auroraは1つのAuroraレプリカ、RDSは1つのスタンバイインスタンスを使用する事にします。(今回RDSはマルチAZ DBインスタンスで考えます)
また稼働期間は1ヶ月(約730時間)、ストレージ容量は1000GBとします。
加えてI/Oは月1億リクエスト、IOPSは12,000以内、スループットは500MiBps以内とします。(両者ともgp3のベースライン内となり、IOPS料金/スループット料金ともに無料となります)
比較項目 | Aurora | RDS |
---|---|---|
インスタンス料金 ※7 | 0.313USD/時間 × 2 インスタンス x 730時間 = 456.98USD | 0.255 USD/時間 × 2 インスタンス x 730時間 = 372.3 USD |
ストレージ料金(1GB当たり) | 0.12USD/月 × 1,000 GB = 120USD | 0.138USD/月 × 1,000 GB × 2 インスタンス = 276USD |
I/O料金(100万リクエスト当たり) | 0.24USD × 1億/100万 = 24USD | - |
IOPS料金(1IOPS当たり) | - | 0.024USD/月 x (12,000IOPS - 12,000IOPS Free) = 0USD/月 |
スループット料金(1MB/秒当たり) | - | 0.024USD/月 x (12,000IOPS - 12,000IOPS Free) = 0USD/月 |
合計 | 600.98USD | 648.3USD |
インスタンス料金の観点で見た場合、単純に考えると Aurora よりも RDS が有利です。
一方で、ストレージ料金という観点で見た場合、単純に考えても Aurora RDS となる上に、Auroraはレプリカ(インスタンス)がいくら増えてもストレージ料金に影響しないため、圧倒的にAuroraが有利になります。
そのためストレージ量が多い場合は、RDS よりも Aurora の方が安くなる可能性が高くなりそうです。
またI/O料金はAurora独自にかかる料金となる一方で、IOPS料金/スループット料金はRDS(gp3)独自でかかる料金となるため、この辺りの料金がどの程度かかるかもポイントとなります。
なお上記の通り、データベース料金はインスタンス、ストレージ、I/O、IOPS、スループットといった様々な要素により変動するため、どちらが有利かは一概には言えないためご注意ください。
(2023/4/17)スループットに関連するインスタンス料金について追記しました。
※7 以下にも記載がある通り、AuroraはRDSと比較してスループットが飛躍的に上がっております。
Amazon Aurora MySQL PostgreSQL の特徴 | リレーショナルデータベース | AWS
MySQL の最大 5 倍のスループットと PostgreSQL の最大 3 倍のスループット
より小さいサイズのインスタンスでもRDSと同等のパフォーマンスを出すケースもあり得るため、結果としてインスタンス料金は少なくなる可能性があります。
使い分け方
最後に、上記の一覧表を元に考えた場合、AuroraとRDSの使い分け方はざっくり以下のようになるかと思います。
- RDS
- データベースエンジンにMariaDB,Oracle,Microsoft SQL Serverのいずれかを使いたい場合
- 最新のMySQL/PostgreSQLバージョンを使いたい場合(Auroraは最新バージョンに対応していない場合がある)
- Aurora
- フェイルオーバー優先順位/バックトラック等に代表されるAurora独自機能を利用したい場合
- フェイルオーバー時間をなるべく短縮したい場合
なおAuroraとRDSの使い分け方については、こちらのブログにより詳しく書かれているのでぜひ参考にしてみてください!
最後に
AuroraとRDSのポイントを比較しやすいように、一覧表でまとめてみました!
AWSのリレーショナルデータベースとして、AuroraとRDSどちらを選択するか迷っている方の参考になりますと幸いです。
以上、つくぼし(tsukuboshi0755)でした!