AWS Auroraとは?その特徴とは?
目次
Amazon Auroraとは?
Amazon Auroraとは、AWS(Amazon Web Services)が開発した、MySQLおよびPostgreSQLと互換性のあるクラウド向けのリレーショナルデータベースのことです。従来、MySQLやPostgreSQLはオープンソースであり安価ではあるものの、拡張性や性能を十分なものにするには高度なスキルが必要であり、大企業向けではないと言われていました。
Amazon Auroraはそのような弱点を克服するような形で性能面や拡張に関する機能を充実させ、従来のエンタープライズデータベースのパフォーマンスを出すことが可能になっています。加えて、MySQLとPostgreSQLなどの特徴であったシンプルさやコスト効率も維持したまま利用することが可能になっています。
開発したAWSによると、MySQLと互換性のあるバージョンと、PostgreSQLと互換性のあるバージョンではそれぞれMySQLの最大5倍、PostgreSQLの最大3倍高速であるとされています。
(Auroraではない)RDSとAuroraの違い
Aurora以外のRDSにおいて、Auroraと比較したメリットは下記の通りです。
- コストが安い
Auroraと比較してRDSはコストを安く抑えながら、マネージドデータベースとしてのメリットを享受することができます。したがって、パブリッククラウドを利用し始めた段階でメンバーのスキルレベルが十分ではなかったり、性能面に不満がなく単純に運用コストを減らしたい場合はRDSを選択するといいでしょう。 - 幅広いデータベースエンジンが利用可能であり、OracleやMicrosoft SQL Serverなどの商用データベースエンジンも利用可能
OracleやMicrosoft SQL Serverなどのデータベースエンジンを使いたい場合はAuroraは使用できません。また、MySQLやPostgreSQLにおいても、利用できるバージョンに差が存在します。例えばAuroraで利用可能なPostgreSQLのメジャーバージョンは9.6、10、11、12、13となります。いっぽうで、RDSの場合は14も利用可能です(※出典:https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)。したがって、使用しているデータベースエンジンの種別や、バージョンにおいてAuroraで提供がない場合はRDSを使用することになります。 - MySQLに限りストレージエンジンが選択できない
これはMySQLの場合のみの話ですが、現在AuroraがサポートしているMySQLのストレージエンジンはInnoDBのみとなっています。MyISAMをどうしても利用したい場合は、RDSを選択することになります。
Amazon Auroraのさまざまな特性
Amazon AuroraにはRDSや通常のマネージドデータベースとは異なる様々な特性があります。どのような特性があるのか、具体的に見ていきましょう。
マネージドデータベースを活用して運用コストを引き下げるスタイルズのAWS導入・移行サービスはこちら→
Auroraのアーキテクチャについて
まずは、Auroraのアーキテクチャについてです。Auroraはクラスタという単位で構成されています。クラスタの要素は1つ以上のDBサーバーで構成されるインスタンス層とデータを管理するストレージ層の2層で成り立っています。つまり、SQLなどの処理を行うインスタンスとデータを保存するストレージが分離しています。また、データを保管するストレージは、1AZあたり2箇所、3AZに渡りコピーされています。このような構成にすることで、仮にネットワーク障害、ディスク破損などの問題が起こっていたとしても、データベースの稼働に影響がないようにし、可用性の向上に貢献しています。
Auroraの特異性:ストレージについて
ストレージ自体にも特異性があります。AuroraのストレージはProtection Groupsという10GBごとのグループに分かれて処理がされます。そして、各Protection Groupに対して並列に同時に処理を行なえるようになっています。これによって得られるメリットとしては、バックアップやリストアといった処理が並列処理により実施されることで、高速に行うことが可能になる、という点です。
Auroraの特異性:バックトラック
より高速にデータベースの状態をリカバリする機能として搭載されているのが、バックトラックです。正確には、「データを巻き戻す/進める」ことができる機能です。例えばデータベースの操作中に誤ったSQLを実行してしまい、テーブルのデータを破壊してしまった場合でも巻き戻すことが可能です。
また、データを巻き戻す/進めることが可能なので、テーブルのデータを破壊してしまった正確な時点を特定して作業を再開することができます。通常のデータベースは特定の時点にデータを戻すことしかできないため、1時間30分前にテーブルを誤操作してしまったのに、2時間分戻してしまうと30分間の更新が失われてしまうことがありますが、この機能を使うことでデータの更新を極力失わずに操作を行うことができるようになります。
Auroraの特異性:クラスタキャッシュ管理
プライマリインスタンスが持っているキャッシュを、特定のリードレプリカと共有することができる機能です。仮にデータベースの障害が発生しフェールオーバーが行われた際に、キャッシュがフェールオーバーされないと、一時的にDBの処理能力が下がってしまいます。この機能を使うことでフェールオーバーが発生してもキャッシュをそのまま利用することが可能になるため、DBの処理能力低下を抑えることが可能です。
Auroraの特異性:並列クエリ
これは、SQLなどの処理を行うインスタンスとデータを保存するストレージが分離しているアーキテクチャによって実現されている機能です。インスタンス層がやっているクエリ実行などの処理をストレージ層のリソースにオフロードして実行させる機能が並列クエリです。このことによってクエリ実行処理が非常に高速化します。
Auroraの特異性:Global Database
複数のAWSリージョンにまたがり高速でレプリケーションとフェイルオーバーが可能になるオプションです。1つのプライマリAWSリージョンと、最大5つのセカンダリAWSリージョンで構築することが出来ます。Global DatabaseのRTO/RPOはそれぞれ、RTOが1分未満、RPOが5秒未満となっており、非常に高速な障害からの回復が可能になっています。
世界中で展開されているアプリケーションのデータベースとしての利用や、リージョン障害に備えた災害対策環境としての利用が考えられます。
Auroraの特異性:マルチマスター
従来のシングルマスター構成とは異なり、複数のプライマリDBを使用可能になります。この機能によって、片方のプライマリDBに障害が発生した場合でも、もう片方のプライマリDBで継続的な書き込みができます。データベース障害が発生した際のフェールオーバー中にも書き込み処理が可能になるため、より可用性が求められるシステムにおいても利用が可能になります。
マネージドデータベースを活用して運用コストを引き下げるスタイルズのAWS導入・移行サービスはこちら→
まとめ
Amazon Auroraの様々な特性を備えていることで、これまでのエンタープライズ向けデータベースとそん色のない性能、可用性を実現しています。これにより、高性能や高可用性が求められるシステムやアプリケーションにおいても、非常に低コストでデータベースを用意することが可能になります。
ただし、Auroraでは利用できるデータベースエンジンやバージョンに制約があったり、一定のリファクタリングが必要であったりします。場合によってはRDSを利用せざるを得ない場合もあり、どのようなアーキテクチャを選択すべきか悩んでしまうこともあるかと思います。
Amazon Auroraの利用を検討する場合や、Amazon Auroraをフル活用したい場合は専門性があるベンダーに相談してみるといいでしょう。また、Amazon AuroraにはAurora Serverlessというサービスもありますが、これについては別コラムで解説します。