AWSで利用できるデータベースエンジン「Amazon Aurora」の特徴を詳しく紹介

はじめに

2023年現在は「クラウドファースト」という考え方が定着しつつあり、スタートアップやベンチャー企業だけではなく有数の大企業や政府関連のシステムまでも従来の自社・データセンターでのオンプレミス運用からクラウドへ移行するという動きが顕著に現れています

当初クラウドサービスに関しては、セキュリティ面をはじめとした様々な課題を抱えていてとても企業のシステムを任せるに至らないという見方をされていましたが、2006年にAmazonが「AWS(Amazon Web Services)」の提供を開始すると2008年にはGoogleが「GCP(Google Cloud Platform、現在のGoogle Cloud)」を、2010年にMicrosoftが「Microsoft Azureaws」の提供を開始し、その他の企業のサービスも含め以降はクラウドサービスが順調に普及していくこととなります。

上記に挙げた3社は競合他社でそれぞれに似た役割を持つサービスを提供しているため、ユーザー側は既存システムの状況や各社サービスの性能・料金比較をしながら利用するサービスを選定する必要があります。また、同じ企業のサービスだけを見ても非常に多くのサービスが提供されていて一見違いがわかりづらいものもあるため、選定してサービスの利用を開始するまでにも前提知識が求められます

この記事ではクラウドにおいてデータベースサービスの選定をする際に役立つ知識の一つとして、AWSの「Amazon Aurora」について紹介していきます。AWSには現時点で200以上のサービスが含まれており、データベース関連のサービスだけでも複数存在します。そのため今回はAWS内のその他データベースサービスについても簡単に紹介し、これまであまりデータベースに触れてこなかったというエンジニアに向けてRDBを含めたデータベースの基礎知識についても触れていきます。すでにデータベースそのものに関しての知識は十分持ち合わせているという方は「RDB(リレーショナルデータベース)についておさらい」の部分を飛ばして読み進めてください。AWSについて総合的に学習したいと思っている方もぜひご覧ください。

RDB(リレーショナルデータベース)についておさらい

データベースは、データを利用しやすい状態に整理したうえで格納していつでも参照や検索、追加・削除・更新等が可能となっている仕組みのことを表し、DBMS(data base management system)はそのデータベースを管理するソフトウェアのことを指します。そんなデータベースは仕組みが大きく異なる4つのタイプに分けることができます。階層型、ネットワーク型、リレーショナル型、NoSQLの4つで、現在はリレーショナル型、NoSQLがシステムの多くで利用されている状況です。

階層型は、Windowsのフォルダ構成のようにツリー構造状でデータが親子関係を持った状態で管理されるタイプです。親は複数の子を持つことが可能ですが子は複数の親を持てない仕様となっているため、辿るべきルートが明確で一般的に検索速度が早くなります。ただし、どうしても子に複数の親を持たせたい場合は親ごとに同じ子データを持たせる重複登録が必要となり、データ量が多くなる、データの追加・削除が発生した際にはルートの再登録が必要になるというデメリットもあります。ネットワーク型は階層型と異なって子が複数の親を持てるため重複登録をしなくて良いタイプのデータベースです。一方で名称の通りノードの関係性が網目(ネットワーク)のように張り巡らされた構造となるため、管理が複雑になるというデメリットがあります。

リレーショナル型は、例えばExcel等の表計算ソフトのように行と列で表すことができるデータ構造を持つデータベースです。階層型、ネットワーク型と比べると柔軟なデータの扱いが可能で複雑なデータでも管理しやすいという特徴がある一方で、データ量が増えると処理速度が遅くなるという課題も抱えています。一般的にデータベースとして聞くことの多いOracle DatabaseやSQL Server、MySQL、PostgreSQLといったデータベースエンジンがこのリレーショナル型に分類され、いずれもSQL文でデータベースの操作を行うタイプとなります。

NoSQLはリレーショナル型のように必ずしもSQLを利用しなくても管理できるデータベースで、基本的には単純構造のデータを管理し高速処理を行うのに適しています。一方でデータの整合性は二の次となり、データの加工処理が難しいというデメリットがあります。NoSQLに分類されるものとしてはDynamoDB、MongoDB、Redis、Neo4j、Apache Cassandra等があり、管理構造によってそれぞれ異なった特徴を持っていますが今回詳細は省略します。なお今回取り上げるAmazon Auroraは以上4つのうちリレーショナル型に分類されるデータベースエンジンです。

クラウド型データベースについて

クラウドサービスで提供されているデータベースのことを「クラウド型データベース」を呼ぶことがあり、その他クラウドサービス同様に機器や設置場所が不要となること、作業工数が減ることによるコスト削減が可能、管理・メンテナンスをベンダーに任せて開発やその他業務に専念できる、柔軟なスケーリングが可能といった特徴を持ち合わせています。

そのためオンプレミスから移行するメリットは多くあると言えますが、一方でベンダーの提供するサービス下で運用するためカスタマイズ可能な範囲が制限される、既存のオンプレミス環境とバージョン等が一致しないと移行できないことがある、セキュリティに関しては一任することはできずユーザー側での管理も必要になるというデメリットもあります。

そうは言っても様々な企業や政府関連のシステムのクラウド移行が進められていることからもわかるように、クラウド型データベースを利用した場合のメリットは非常に多く、現在オンプレミスのシステムにおけるインフラエンジニアやSE(システムエンジニア)の職に就いている方は、今後クラウド型データベースを含めたクラウドの仕様や特徴を一通り把握しておく必要があると言えるでしょう。

AWSで提供されているデータベースサービス全般を紹介

Amazon Aurora以外にAWSで提供されているデータベースサービス9つを簡単に紹介していきます。サービス比較をする際の導入として参照いただければ幸いです。

1つ目は「Amazon RDS」です。他にサーバーを持つことなくリレーショナルデータベースを使ったデータベースサーバー環境構築・運用が可能で、Amazon Auroraを含めPostgreSQL、MySQL、MariaDB、Oracle Database、Microsoft SQL Serverといった6つのデータベースエンジンから選択して構築・運用が可能となります。Amazon Auroraはこのサービスを利用することで初めて利用可能となります。オンプレミス環境からの移行が可能である他、リードレプリカによる負荷分散、自動バックアップ、自動パッチ、データの暗号化等の機能を備えています。

2つ目は「Amazon Redshift」です。こちらはデータベースというよりはデータウェアハウスとしての役割を持っており、大量なデータの分析を行うシステムに利用されることが多いです。データウェアハウスとは超並列処理という技術を備えていることで効率的な分析ができる大容量のデータ保管庫で、一般的にデータの更新や削除が行われることはデータベースと比べると少ないです。

3つ目は「Amazon DynamoDB」です。NoSQLタイプのデータベースサービスで、その中でもキーバリューストア型、ドキュメント型に分類されます。キーバリューストア型はキーとバリュー(値)でデータを管理する方式を採り、大規模な水平スケーリング(負荷の増減によって自動的にリソースを増減させる)が可能となっています。ドキュメント型はJSON(JavaScript Object Notation)やXMLといったフォーマットで記述されたデータを柔軟に管理することができます。この両方を生かしてリアルタイムな更新や情報の取得が必要なシステムで利用されています。

4つ目は「Amazon ElastiCache」ですが、こちらはデータベースそのもののサービスではなく関連サービスとなります。フルマネージドでインメモリ型(メモリ上でデータの管理を行う)のキャッシング機能提供サービスで、レイテンシー(待ち時間、反応時間)の短縮が可能です。そのため特にレイテンシーにシビアなアプリやゲーム、ストリーミングシステム等で特に有効ですが、データベースのパフォーマンス向上にも役立ちます。なおインメモリ型のデータベースサービスとしてNoSQLの「Redis」に特化した「Amazon MemoryDB for Redis」というサービスもあります。

5つ目は「Amazon DocumentDB(MongoDB互換)」です。完全マネージド型のデータベースサービスであり、NoSQLタイプのデータベースとして紹介した「MongoDB」と互換性のあるデータベースの構築・運用、スケールが可能です。JSON形式のデータをそのまま格納することが可能という特徴も持ち合わせています。

6つ目は「Amazon Keyspaces(Apache Cassandra向け)」です。DocumentDBがMongoDB向けのサービスであるのに対し、Keyspacesはもう一つのNoSQL「Apache Cassandra」を対象としたマネージドデータベースサービスとなっています。すでに利用しているアプリケーションのコードをそのまま引き継げる、その他サーバーを用意する必要のないサーバーレスサービスである、自動スケーリングやPITR(ポイントタイムリカバリ)が可能といった特徴等を持っています。

7つ目は「Amazon Neptune」です。NoSQLの種類の一つである「グラフ型」に分類されるデータベースのフルマネージドサービスであり、グラフクエリ言語(Gremlin、 SPARQL)を利用することで高速な処理が可能となります。複数のAZ(Availability Zone)間でデータが6つコピーされることによる耐障害性と自己修復機能を備えています。

8つ目は「Amazon Timestream」です。別途サーバーを必要としないサーバーレスな時系列データベースサービスの一つで、 IoTシステムや機器モニタリング、Webシステムのトラフィック分析等に適しています。時系列データベースとは、特定の時間ごとに取得したデータ「時系列データ」の保存や分析が行えるものを指します。タイムスタンプごとのデータを収集するので、自ずとデータ量が多くなることが予測されます。

9つ目は「Amazon 台帳データベースサービス(QLDB)」です。QLDBは「台帳データベース」と呼ばれるものの一つで、SQL互換クエリ言語を使ってデータの操作を行います。QLDBの特徴としては、ログを記録することでデータの改竄有無をチェックすることができるためデータの信憑性・正確性の確認が可能となることが挙げられます。そのため記録システム、サプライチェーン、銀行トランザクションといったデータの透明性や不変性が求められるシステムに適していると言えます。

簡単にではありますが全9つの特徴を紹介しました。AWSでデータベース関連サービスを選定する際は、次に紹介するAmazon Auroraの概要とあわせてご参照ください。

データベースエンジン「Amazon Aurora」の概要

AWSで提供されているRDBの一つでAmazon RDSにて選択が可能なクラウド用に最適化されたデータベースサービスです。MySQLやPostgreSQLと互換性があり、処理速度や拡張性が従来の各データベースエンジンより向上しています。AuroraではMySQLにおいては最大5倍、PostgreSQLにおいては最大3倍のスループット(単位時間あたりに処理できるデータ量)が可能ということが公表されています。ただしバージョンによって使えないものがあるのでオンプレミスから移行を行う際はあらかじめ確認しておくことが必須となります。なおAuroraでの対応バージョンに関しては変わる可能性があるため、導入・移行時の詳しいバージョンについてAWSの公式サイトで確認しましょう。

MySQLやPostgreSQLと互換性があることは一つのメリットですが、その他にもクラウドサービスならではのスケーラビリティや、耐障害性に関するメリットも持ち合わせています。スケーラビリティにおいては、その時のデータ量によって10GB〜最大128TBまでのオートスケーリングが可能であり、その他AWSで提供されているRDBが最大64TBであることを考えるとAuroraは大容量が利用できることがわかります。また自動でのデータベースのクラスター化やレプリケーションも可能です。

なおAuroraには「Serverless」というオートスケーリング機能があり、これを利用することで手動での調整が不要となりコストの削減も可能となります。通常インスタンスを起動・停止させるためには人による操作が必要となりますが、Serverlessの設定をしておくとシステムの利用状況に応じて自動で起動・停止によるスケールアップ・スケールダウンをしてくれるという仕組みです。そのため利用頻度の少ないデータベースには適した機能と言えます。

耐障害性が実現できる理由としてはAuroraのアーキテクチャが挙げられます。Auroraは1つあるいは複数のデータベースがある「インスタンス層」とデータが管理される「ストレージ層」が独立しているうえ、ストレージが1AZにつき2箇所、全3箇所にコピーされます。コピーされているだけではなくデータの破損を検知することも可能で、検知した場合は自動復旧が行われます。これらにより一部に障害や不具合が発生したとしても全体に影響を与えずに済む、あるいはいち早く復旧できる構成となっています。なおAuroraのストレージは10GBごとのグループ(Protection Groups)に分けられており、それぞれ並列処理が可能となっていることでバックアップ・リストアにおける処理速度の向上が望めます。

なおAuroraにはマスター(プライマリ)のデータベースからデータをコピーした読み取り専用の「リードレプリカ」があり、最大15個まで追加が可能です。リードレプリカを設置することでマスターだけではなくリードレプリカでもリクエストを処理できるようになるため、大量のリクエストがあった場合も負荷分散が可能となります。さらにAuroraのリードレプリカは障害発生時のフォールオーバー先(セカンダリデータベース)として活用することも可能で、自動的に読み書きどちらも可能なデータベースとすることもできます。RDSの他のデータベースでもリードレプリカ自体は利用できるものの同じようにセカンダリとしての利用はできないため、別のデータベースを利用する際はご注意ください。

フェールオーバーができたとしてもセカンダリは新たなサーバーとして認識されるために、キャッシュが溜まるまでは処理速度が遅くなることを懸念される方もいることでしょう。しかしAuroraには「クラスタキャッシュ管理」という機能があり、これを利用することでマスターのキャッシュ情報を共有することが可能となります。そのため処理速度も変わらず維持できます。

またAuroraには「バックトラック」という機能も搭載されています。バックトラックとはある処理を実行後に巻き戻したり進めたりできる機能のことで、誤ったSQL文の実行をしてしまった際にその処理をなかったことにできます。他のデータベースでも同様の機能がありますがAuroraの場合は戻したい時点を細かく特定することができるので、一定期間におけるデータの消失を最小限に防ぐことができます。

その他にもAWSで用意された複数のリージョンの最大5箇所に渡って高速なレプリケーションやフェールオーバーが可能となる「Global Database」、マスターデータベース自体を複数持つことができる「マルチマスター」という機能も利用可能なため、これらによってさらに可用性を高めることが可能です。

Auroraの利用を始める

最後にAuroraを利用するまでの流れを簡単に紹介します。その他AWSサービスと同様、事前に無料のAWSアカウントの登録が必要となるので、持っていない方は先に登録を済ませましょう。アカウントを作成したらAWSマネジメントコンソールへアクセスし「Find Services」の欄で「Amazon Aurora」を検索してください。

その後コンソールからリージョンやMySQL、PostgreSQLのどちらを利用するかを選択してデータベースの作成に移ります。インスタンスサイズ、DBクラスター識別子、ユーザー名の入力・パスワード等を選択あるいは入力しましょう。

続いてIAMアカウントとの連携やアクセス領域、監視の設定等を行います。以上の設定が完了したらエンドポイントを経由して接続を行います。コンソール内の「Databases」からDBクラスターを選択し、「Connectivity & Security」の「エンドポイント」セクションで該当クラスタの詳細を確認して「telnet / nc」で接続を試してみましょう。

まとめ

Amazon Auroraは数あるAWSのデータベース関連サービスの一つでありAmazon RDSで選択できるデータベースエンジンの一つであること、MySQLやPostgreSQLといったRDBと互換性があること、可用性が高くスケーラブルなフルマネージドサービスであること、オンプレミス環境からの移行も可能であること、インスタンス層とストレージ層が独立していること等を紹介してきました。

利用方法によってはオンプレミスでの運用やその他データベースサービスよりコストが多くかかってしまう可能性もありますが、あらかじめユースケースやシステムの稼働を予定している期間のコストを予測することで、クラウドサービスの大きな特徴であるコスト削減を実現しながら高性能なRDBを利用できるようになります。

ぜひ今回の記事を参考にAmazon Auroraの概要を把握し、その他サービスとも比較したうえでコストを予測して今後のシステム運用を検討していただけると幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です