リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
Author : 米倉 裕基 (監修 : 新久保 浩二)
※ 本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。awsgeek.com は 、Jerry Hargrove 氏が運営しているサイトです。
builders.flash 読者のみなさん、こんにちは ! テクニカルライターの米倉裕基と申します。
本記事では、6 種類の人気のデータベースエンジンを簡単にセットアップ、運用、スケールできるマネージドリレーショナルデータベースサービス「Amazon Relational Database Service (RDS)」をご紹介します。
Amazon RDS (以下、RDS) では、AWS マネジメントコンソール上で数回クリックするだけで使い慣れたデータベースエンジンをクラウド上にデプロイできます。導入や運用が簡単な RDS は、新規で DB サーバーの構築を検討する場合であっても、既存の DB サーバーをクラウドに移行する場合であっても、有力な選択肢になるでしょう。
本記事では、RDS の主な機能と特徴を順番に見ていきます。
RDB と NoSQL の違いとは ?
DB サーバーを検討する際は、さまざまなデータベースエンジンの種類と特徴を理解した上で、ユースケースに応じて最適なエンジンを選択することが重要です。ここでは、RDS 独自の機能を紹介する前に、主だったデータベースエンジンの種類と特性を簡単に説明します。
従来から使われてきた RDB (リレーショナルデータベース) に加え、近年は RDB よりもスキーマ (データ構造) の自由度が高い NoSQL (非リレーショナルデータベース) と呼ばれるデータベースエンジンも広く使われています。
RDB と NoSQL のどちらがより優れているというものではなく、ユースケースによって適したデータベースは異なります。
クリックすると拡大します
AWS では、RDS が提供するリレーショナルデータベースサービスの他に、NoSQL データベースも複数のサービスを提供しています。たとえば、キーバリューストア型の「Amazon DynamoDB」、ドキュメント型の「Amazon DocumentDB」、グラフ型 の「Amazon Neptune」、インメモリ型の「Amazon MemoryDB for Redis」などは、AWS が提供する代表的な NoSQL データベースサービスです。
AWS が提供する RDB および NoSQL データベースサービスの特徴とユースケースは以下のとおりです。それぞれの特徴を踏まえて、最適なデータベースを選択するための参考にしてください。
データベースの種類 | AWS サービス名 | 特徴 | ユースケース | |
RDB (リレーショナルデータベース) |
Amazon RDS | 行と列からなる表形式でデータを管理します。複数の表 (テーブル) の関係性 (リレーション) を定義することで、高度なデータの管理・検索が可能です。データの一貫性や整合性を重視した設計になっており、堅牢なシステムを構築する場合に向いています。 | - 従来のアプリケーション - 基幹系情報システム (ERP) - 顧客関係管理システム (CRM) - e コマース |
|
NoSQL (非リレーショナルデータベース) |
キーバリュー型 | Amazon DynamoDB | キー (データの識別子) とバリュー (データ) の組み合わせでデータを格納するデータモデル。不定型なデータを高速に処理するケースに向いています。 | - トラフィックの多いウェブアプリケーション - e コマース - ゲームアプリケーション |
ドキュメント型 | Amazon DocumentDB | JSON データの保存、クエリ、およびインデックスなど、ドキュメントの管理に最適化されたデータベースです。 | - コンテンツ管理 - カタログ - ユーザープロファイル |
|
グラフ型 | Amazon Neptune | 「ノード」「エッジ」「プロパティ」「ラベル」の4つの要素で構成されるグラフにデータを格納します。データとデータのつながりをグラフとして管理します。 | - 不正検出 - ソーシャルネットワーク - レコメンデーションエンジン |
|
インメモリ型 | Amazon MemoryDB for Redis | データをメモリ上に保存するデータベースです。永続的なデータの保存には向かないが、データへの超高速なアクセスが可能です。 | - キャッシュ - セッション管理 - ゲームのリーダーボード - 地理空間アプリケーション |
2022 年 6 月号の builders.flash では「高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説」と題して Amazon DynamoDB の紹介記事を掲載しています。RDB と NoSQL の違いをさらに理解しやすくするために、本記事と合わせてご覧ください。
本記事では、RDS の主な機能や特徴を以下の項目に分けてご説明します。
それでは、項目ごとに詳しく見ていきましょう。
エンジン
RDSでは、商用、オープンソースを問わず、以下の 6 種類のデータベースエンジンが利用できます。
AWS マネジメントコンソールでデータベースを作成する際には、現在作成可能なバージョンをプルダウンから選択できます。
クリックすると拡大します
インスタンス
RDS DB インスタンスの CPU 、メモリ、ネットワークキャパシティーなどのパフォーマンスは、インスタンスクラスを選択することで決定されます。
RDS では、「バースト可能クラス」、「標準クラス」、「メモリ最適化クラス」の 3 種類のインスタンスクラスをサポートしています。ユースケースに合わせて最適なインスタンスクラスを選択します。
クリックすると拡大します
ストレージ
RDS では、汎用 SSD (gp2)、プロビジョンド IOPS SSD (io1) 、およびマグネティックの 3 種類のストレージタイプを提供しています。データサイズと I/O のパフォーマンス、および料金を比較して、最適なストレージタイプを選択します。
ただし、Amazon Aurora では、専用に開発された分散型の共有ストレージアーキテクチャを利用するため、以下で説明する gp2、io1 など EBS ベースのストレージタイプを利用しません。Amazon Aurora のストレージについて詳しくは、「Amazon Aurora ストレージと信頼性」をご覧ください。
ストレージサイズと IOPS
同じストレージタイプでも、データベースエンジンによって割り当て可能なストレージサイズや IOPS (読み込み / 書き込み性能) が異なります。
データベースエンジンごとの割り当て可能なストレージサイズや IOPS は、AWS マネジメントコンソールで確認できます。
RDS のストレージは、Amazon Elastic Block Store (Amazon EBS) を使用しており、ストレージボリュームをエラスティックにスケールすることができます。
クリックすると拡大します
バックアップ
RDS では、データベースの意図しない変更や、障害に備えて、DB インスタンス全体をバックアップする仕組みが備わっています。バックアップデータは、指定された期間が保存され、任意のタイミングで保存時の状態のまま復元することができます。
自動バックアップ機能
RDSには、1 日に 1 回自動でインスタンスのスナップショットを取得する自動バックアップ機能があります。自動バックアップは、バックアップウィンドウ (自動バックアップが実行される時間帯) の間に実行されます。デフォルト設定では、バックアップウィンドウはリージョンごとに定められた 8 時間の時間ブロックから 30 分間がランダムに選択されますが、ユーザーが任意に設定することも可能です。
バックアップの保存期間は、1 日〜 35 日の間で選択できます。スナップショットデータは、AWS が管理する S3 バケットに保存されますが、スナップショット内のデータを任意の S3 バケットにエクスポートして分析に利用することもできます。詳しくは、ユーザーガイドの「Amazon S3 への DB スナップショットデータのエクスポート」(Amazon Aurora の場合はこちら) をご覧ください。
クリックすると拡大します
手動スナップショット機能
RDS では、自動バックアップ機能に加え、AWS マネジメントコンソール、AWS CLI、または RDS API を使用して、いつでも手動でスナップショットデータを保存することが可能です。1 日に 1 回の自動バックアップ以外の任意のタイミングでバックアップを実施したい場合に、手動スナップショットを実行します。
手動スナップショットについて詳しくは、ユーザーガイドの「DB スナップショットの作成」(Amazon Aurora の場合はこちら) をご覧ください。
スナップショットデータのリストア
取得したスナップショットデータのリストア (復元) は、AWS マネジメントコンソールで復元したいスナップショットを選択するだけで簡単に行えます。数回のクリックで、DB インスタンスをスナップショット取得時の状態にリストアできます。
なお、スナップショットは新規の DB インスタンスとして復元されます。既存のインスタンスには復元されません。
ポイントインタイムリカバリ
DB インスタンスを、特定時点の状態に復元する機能です。
RDS では 5 分間隔でトランザクションログを S3 にアップロードし、DB インスタンスの状態を継続的に保持します。そのため、直近の 5 分前から自動バックアップで設定した保持期間 (最大 35 日前) までの特定時点の状態まで DB インスタンスを復元できます。
ポイントインタイムリカバリは、スナップショットデータのリストアと同様、新規の DB インスタンスに DB クラスタを復元します。ただし、Amazon Aurora (MySQL 互換エディション) では、同一の DB インスタンスの状態を指定した時間まで巻き戻す DB クラスターのバックトラック という機能が提供されています。
セキュリティ
RDS を含め AWS サービスを利用する上での最重要事項はセキュリティです。特に機密情報を管理することが多いデータベースのセキュリティは注意が必要です。
RDS では、 データベースへのアクセス制御と、DB インスタンス上のリソースおよび DB インスタンス自体の暗号化の両面からセキュリティを確保します。
VPC によるネットワークの分離
RDS DB インスタンスは、AWS クラウド上の他のネットワークから論理的に分離した仮想ネットワーク (Amazon VPC) 内にあります。そのため、Amazon VPC の セキュリティグループ で通信可能なトラフィックの要件を指定することで、DB インスタンスへのインバウンドトラフィック、アウトバウンドトラフィックを制御できます。
RDS のデフォルト設定では、パブリックアクセスは許可されていないため、VPC 外部のネットワークからのアクセスは遮断されます。VPC 外部のアプリケーションからプライベート RDS DB インスタンスにアクセスするには、AWS Site-to-Site VPN を使うか、Amazon EC2 インスタンスを踏み台ホスト として使います。
クリックすると拡大します
ネットワークとリソースの暗号化
RDS では、ストレージ内の DB インスタンス、自動バックアップ、リードレプリカ、スナップショットを AES-256 暗号化アルゴリズムで暗号化します。暗号化および復号化に使用するカスタマーマネージドキーは、AWS Key Management Service (AWS KMS) で管理できます。
また、RDS はSSL または TLS 接続をサポートしています。SSL/TLS を使って通信することで、クライアントと DB インスタンス間を転送するデータを暗号化できます。
マルチ AZ 配置
マルチ AZ 配置オプションを選択した場合、データの読み書きを行うプライマリ DB インスタンスと、データが同期的にレプリケートされるスタンバイ DB インスタンスが、それぞれ別の AZ (アベイラビリティーゾーン) に配置されます。
プライマリ DB インスタンスで障害が発生すると、すぐにスタンバイ DB インスタンスを昇格させて プライマリ DB インスタンスとして稼働させることができるため、高い耐障害性と可用性を実現できます。
自動フェイルオーバー
マルチ AZ 配置では、プライマリ DB インスタンスのダウンや、メンテナンス、AZ の障害などの異常を検知すると、自動でスタンバイ DB インスタンスにフェイルオーバーする自動フェイルオーバー機能を備えています。
自動フェイルオーバーは通常 60 秒 ~ 120 秒の間 (Amazon Aurora の場合は 30 秒以内) で実行され、手動によるフェイルオーバーと比べ障害発生時のダウンタイムを短くできます。
自動フェイルオーバーは、DB インスタンスの接続ポイント名 (CNAME) を切り替えることで、スタンバイ DB インスタンスをプライマリ DB インスタンスに昇格させます。
クリックすると拡大します
リードレプリカ
リードレプリカとは、プライマリ DB インスタンスのレプリカ (複製) DB インスタンスのことです。
リードレプリカは、読み込み専用の DB インスタンスとして機能し、書き込みは行いません。リードレプリカのデータは、プライマリ DB インスタンスから非同期にレプリケート (コピー) することで更新されます。
スケーラビリティの向上
予備の DB インスタンスを作成するという点では、リードレプリカは マルチ AZ 配置と類似したオプションと言えます。ただし、マルチ AZ 配置の役割が耐障害性と可用性の向上であるのに対し、リードレプリカの主な役割は読み込み処理量のスケールアウトです。
リードレプリカは、読み込み頻度の高いワークロードを、最大 5 台 (Amazon Aurora の場合は 15 台) のリードレプリカで負荷分散することで、パフォーマンスを維持します。
リードレプリカについて詳しくは、RDS ユーザーガイドの「リードレプリカの使用」をご覧ください。
クリックすると拡大します
多層リードレプリカ
MySQL、MariaDB および PostgreSQL を使用している場合、リードレプリカからさらに 2 層目のリードレプリカを作成できます。多層的にリードレプリカを作成することで、1 層目のリードレプリカの負荷を 2 層目のリードレプリカに分散することができます。リードレプリカは、最大 3 層目まで作成できます。PostgreSQL による多層リードレプリカのサポートは、2022 年 5 月にサポートが開始されたばかりです。詳しくは こちら をご覧ください。
※ 2022 年 7 月現在、Amazon Aurora、Oracle、SQL Server では多層リードレプリカはサポートされていません。
クロスリージョンリードレプリカ
クロスリージョンレプリケーションとは、複数のリージョン間でデータをレプリケートし、データの冗長化を実現する機能です。RDS では、プライマリ DB インスタンスとは異なる AWS リージョンにリードレプリカを作成することで、クロスリージョンレプリケーションを構成できます。
クロスリージョンリードレプリカを作成することで、災害対策ソリューションの確保、データベースの読み込みワークロードのスケーリング、およびリージョン間での DB インスタンスの移行が容易になります。
クロスリージョンリードレプリカは、Amazon Aurora (MySQL 互換エディション)、MariaDB、MySQL、Oracle、PostgreSQL で作成できます。2022 年 7 月現在、SQL Server ではサポートされていません。クロスリージョンリードレプリカについて詳しくは、「別の AWS リージョンでのリードレプリカの作成」をご覧ください。
なお、クロスリージョンリードレプリカと類似した機能として、Amazon Aurora (MySQL および PostgreSQL 互換エディション) の場合、複数のリージョンをまたぐ DB レプリカインスタンスを構成するグローバルデータベースを作成できます。グローバルデータベースについて詳しくは、「Amazon Aurora Global Database の使用」をご覧ください。
料金
RDB の利用料金は、 DB インスタンスや、データベースストレージ、バックアップストレージ、バックトラック、スナップショットのエクスポート、データ転送などに対して課金されます。
他の AWS サービスと同様、リージョンによって単価が異なります。図内の料金は、「アジアパシフィック (東京)」リージョンのものです。
クリックすると拡大します
DB インスタンス
DB インスタンスの利用料金は、1 秒ごとに課金され、10 分未満の場合は 10 分の料金が発生します。料金単価は、データベースエンジンの種類と DB インスタンスクラス (db.t3.micro や db.m4.large など) により異なります。
データベースストレージ
ストレージの種類によって異なる単価で課金されます。
- 汎用 SSD ストレージ (gp2) :
月当たりのストレージ容量 (GiB) に従って課金されます。 - プロビジョンド IOPS ストレージ (io1) :
月当たりのストレージ容量 (GiB)と、プロビジョンドされた IOPS (読み込み / 書き込み処理量) に対して課金されます。 - マグネティックストレージ :
月当たりのストレージ容量 (GiB)と、I/O (書き込み/読み込み) に対して課金されます。
Amazon Aurora は、「ストレージ」で述べたとおり gp2 や io1 など EBS ベースのストレージではなく、専用の Aurora ストレージを利用します。Aurora ストレージは、GB / 月単位で、I/O 消費量は 100 万件のリクエストごとに課金されます。
バックアップストレージ
バックアップストレージとは、自動バックアップや、手動スナップショットで取得したバックアップデータを保存するストレージです。バックアップストレージの使用料は、データベースストレージの使用量が 100% を超えるまでは発生しません。100% を超えた時点で、バックアップに使用したストレージ容量が月単位で課金されるようになります。
データ転送
RDS へのデータ受信、および RDS からのデータ送信に対して課金されます。
インターネットから RDS へのデータ受信、RDS からインターネットへのデータ送信、RDS から別の AWS サービスへのデータ転送によって料金単価は異なります。
バックトラックや、スナップショットのエキスポートなどその他の料金体系について詳しくは、「Amazon RDS の料金」ページから対象のエンジンを選択して料金表をご参照ください。
まとめ
前述のとおり、ユースケースに応じて最適なデータベースを選択するには、データベースごとの特徴と相違点をよく理解することが重要です。本グラレコ記事では、RDB と NoSQL の比較と RDS ならではの機能を 8 つの項目に分けてご紹介しました。
データベースのセットアップ・運用・スケーリングは手間がかかるだけでなく、わずかなミスがビジネスに直結するミッションクリティカルな作業です。その点 RDS は、マネージドリレーショナルデータベースサービスとして、負荷分散やバックアップ、OS のパッチ適用などの処理を AWS 側に任せることができます。
最後に、全体の図を見てみましょう。
本記事を読んで RDS に興味を持たれた方、実際に使ってみたいと思われた方は、ぜひ製品ページの「Amazon RDS」も合わせてご覧ください。
AWS グラレコ解説のその他の記事はこちら
- 選択
- 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
- サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
- 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
- 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
- AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
- コンテナを使ってモノリスを分割する方法をグラレコで解説 »
- クラウドへ移行する理由とそのステップをグラレコで解説 »
- Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
- サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
- サーバーレスで SaaS を構築する方法をグラレコで解説 »
- 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
- クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
- 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
- アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
- わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
- 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
- Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
- 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
- ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
- 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
- カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
- GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
- IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
- 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
- サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
- データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
- 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
- リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
- アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
- データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
- アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説
- AWS で簡単にコンテナアプリケーションを構築 ! Amazon ECS をグラレコで解説
- 大規模データセットも簡単クエリ! Amazon Athena をグラレコで解説
- キャッシュ機能でアプリの高速化を実現 ! Amazon ElastiCache をグラレコで解説
- 使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説
- ストリーミングデータを簡単にキャプチャ、処理、保存 ! Amazon Kinesis Data Streams をグラレコで解説
- AWS で始める機械学習はじめの一歩 ! AWS の主要な AI/ML サービスをグラレコで解説
- リレーショナルデータベースをサーバーレス化 ! Amazon Aurora Serverless をグラレコで解説
- ML 駆動の検索エンジンで企業の情報管理を革新! Amazon Kendra をグラレコで解説
- オンプレミス、エッジ、どこでも楽々コンテナ管理 ! Amazon EKS Anywhere をグラレコで解説
- 生成 AI アプリケーション開発をもっと身近に、簡単に ! Amazon Bedrock をグラレコで解説
- わずか数クリックで多様な脅威を監視しクラウドを保護 ! 脅威検出サービス Amazon GuardDuty をグラレコで解説
- データの改ざん耐性と変更履歴の検証可能性を実現 ! 台帳データベース Amazon QLDB をグラレコで解説
- 生成 AI x クラウドがもたらす次世代のイノベーション ! AWS Summit Japan Day 1 基調講演をグラレコで解説
- ビジネス向け生成 AI アシスタント Amazon Q Business をグラレコで解説
- 生成 AI コーディングアシスタント Amazon Q Developer をグラレコで解説
- フロントエンドとバックエンドを統合開発 ! フルスタック TypeScript 開発環境 AWS Amplify Gen 2 をグラレコで解説
筆者プロフィール
米倉 裕基
アマゾン ウェブ サービス ジャパン合同会社
テクニカルライター・イラストレーター
日英テクニカルライター・イラストレーター・ドキュメントエンジニアとして、各種エンジニア向け技術文書の制作を行ってきました。
趣味は娘に隠れてホラーゲームをプレイすることと、暗号通貨自動取引ボットの開発です。
現在、AWS や機械学習、ブロックチェーン関連の資格取得に向け勉強中です。
監修者プロフィール
新久保 浩二
アマゾン ウェブ サービス ジャパン合同会社
シニアソリューションアーキテクト データベーススペシャリスト
20 年以上データベース (特に RDBMS) 関連の開発、プリセールス、コンサルタントとしてビジネスに携わってきました。現在は、AWS でデータベースを利用される際の支援やチューニング、最適化などを主に担当しています。趣味は自宅近くの海で、まったりとビールを飲むことです。
AWS を無料でお試しいただけます