Amazon Aurora

MySQL の最大 5 倍、PostgreSQL の最大 3 倍のスループットを実現する AWS 独自のクラウドネイティブなリレーショナルデータベース

概要

Amazon Aurora は、AWS がクラウド向けにゼロから設計したリレーショナルデータベースエンジンです。MySQL および PostgreSQL と互換性があり、既存のアプリケーションコードやツールをほぼそのまま利用できます。ストレージは 3 つのアベイラビリティゾーンにまたがる 6 つのコピーに自動複製され、最大 128 TB まで自動拡張されます。Aurora Serverless v2 を使えば、データベースのキャパシティがワークロードに応じて自動的にスケールし、アイドル時のコストを最小化できます。リードレプリカは最大 15 個まで作成でき、フェイルオーバー時間は通常 30 秒以内です。Aurora Global Database を使えば、最大 5 つのリージョンにデータを 1 秒未満のレイテンシで複製し、リージョン障害時のフェイルオーバーも可能です。

Aurora のストレージアーキテクチャ

Aurora の高性能の秘密は、コンピューティングとストレージを分離した独自のアーキテクチャにあります。従来の RDS ではデータベースインスタンスにストレージが直接アタッチされていましたが、Aurora ではストレージレイヤーが独立した分散システムとして動作します。データは 10 GB のセグメントに分割され、各セグメントが 3 つの AZ にまたがる 6 つのコピーとして保存されます。書き込みは 6 つのコピーのうち 4 つに成功すれば完了と見なされ (4/6 クォーラム)、読み取りは 3 つのコピーから応答があれば完了します (3/6 クォーラム)。この設計により、2 つのコピーが同時に失われてもデータの読み取りが可能で、3 つのコピーが失われても書き込みが可能です。ストレージの自動修復機能により、障害が検出されたセグメントは自動的に再構築されます。

Azure SQL Database との比較

Azure で Aurora に近い位置づけのサービスは Azure SQL Database の Hyperscale サービスレベルです。Hyperscale も計算とストレージを分離したアーキテクチャを採用しており、最大 100 TB のデータベースサイズに対応します。Aurora との違いとして、Aurora は MySQL と PostgreSQL の 2 つのエンジンに対応するのに対し、Azure SQL Database Hyperscale は SQL Server エンジンのみです。フェイルオーバー時間は Aurora が通常 30 秒以内であるのに対し、Azure SQL Database の自動フェイルオーバーグループは 30 - 60 秒程度です。Aurora Serverless v2 は 0.5 ACU (約 1 GB メモリ) から 128 ACU まで細かくスケールし、アイドル時のコストを大幅に抑えられますが、Azure SQL Database のサーバーレスは最小 0.5 vCore からで、自動一時停止機能によりアイドル時のコストをゼロにできる点が異なります。