AWS TRAINING COURSE
---LESSON 07---
AWSのリレーショナル
データベース
基本のき
連載「AWS(Amazon Web Services)Training Course」では、読者の皆さまのビジネスに役立つクラウドやAWSに関する知識と情報を、誰かに話してみようと思うような面白いエピソードを交えながら、楽しみながら学べる内容で進めていきます。今回はAWSのリレーショナルデータベースのサービスである「Amazon Relational Database Service」(Amazon RDS)を紹介します。
リレーショナルデータベースとは
表と表を関連付けて管理する
読者の皆さま、ご無沙汰しております。本連載の2回目(LESSON:02)で「グローバルインフラストラクチャーとAWSの学び方」の記事を担当しました髙橋敏行(ゆっきー)です。今回はデータベースに関するお話をしますが、実はそのLESSON:02でも少しお話ししていますので、合わせてお読みください。
さて、今日の企業システムではデータの格納・検索のためにデータベースが使われています。データベースと一言でいっても、多種多様な種類が存在しており、用途に応じて適切に選ぶことが重要なのですが、特に利用する機会の多いのがリレーショナルデータベース(RDB)です。
RDBとは列と行を持った表形式のデータを互いに関連付けたモデルの集合体です。例えばECサイトでは商品の情報や料金などを管理する「商品表」、それを購入する人の情報を管理する「顧客表」、発注を管理する「発注表」などが必要になります。ECサイトで商品を購入したら「誰が」「いつ」「何を」「いくら」で注文したかを記録する必要があります。そこで発注表に日付や顧客ID、商品IDを登録することで管理ができます。
このとき顧客の情報を全て記載するのは効率が悪いので、「このIDのお客さまが購入した」という情報だけ記載し、顧客の詳細情報は「顧客表」の指定されたIDを参照するようにします。商品も同様にIDを登録するだけで、詳細は「商品表」を参照すれば分かります。
このように表と表を関連付けて管理するデータベースをリレーショナル(関係)データベースといいます。データベースを扱うには専用のソフトウェアを利用するのですが、いくつかの種類があります。有名なのはMySQLやPostgreSQLというOSS(オープンソースソフトウェア)や、Oracle DatabaseやMicrosoft SQL Serverなどの商用ライセンス製品です。
Amazon RDSのメリットは
準備と運用の負担がないこと
データベースを利用する場合はMySQLなどのソフトウェアのインストールや運用管理が必要になります。運用管理とは安定的にデータベースを使うための作業で、バックアップを取得したりパッチの適用をしたりする日常業務のことです。
実はこのデータベースの準備と運用がとても大変でして、ある調査によるとデータベースエンジニアの工数の7割が準備や運用に費やされているそうです。本当は性能改善などの「データベースを使う」ことに労力を費やしたいのですが、現実はそうはいきません。
さて、AWSでRDBを利用するにはLESSON:05のAmazon EC2で紹介した仮想サーバー上にRDBをインストールして利用することもできますが、AWSでは専用のRDBサービス「Amazon Relational Database Service」(Amazon RDS)を提供しています。
Amazon RDSを利用すれば大変なインストールをせず、運用管理もAWSに任せることができるので、データベースを「使う」ことに注力できます。サービスの具体的な利用方法は動画(おかわりコラムを参照)で紹介していますのでご視聴ください。
Amazon RDSは五つのデータベースエンジン(MySQL、PostgreSQL、MariaDB、Oracle、SQL Server)と一つのサービス(Amazon Aurora)から選択して利用できる、フルマネージドのRDBです。なおAmazon Auroraはクラウド時代に再設計された新しいデータベースサービスなのですが、これはまた別の機会に紹介します。
Amazon RDSはエンジンの種類、バージョン、名前、スペック(CPUやメモリーサイズ、ストレージ容量)、構成(冗長構成にするか否か)を選ぶだけで起動できます。起動後はインストールが終わってデータベースが使える状態になっているので、すぐにアクセスできます。今まで大変だった部分が、あっという間に準備完了です。
Amazon RDSの主な特長
運用・管理、拡張性、可用性、セキュリティ
Amazon RDSにはたくさんのメリットがありますが、ここでは主な特長を紹介しておきましょう。まず管理・運用においてAmazon RDSではバックアップの自動取得(手動も可能)もできますし、パッチも自動で適用できます。また拡張性に関しては、全てのデータベースエンジンにおいてストレージの自動拡張に対応(64TBまで。Auroraは128TB、SQL Serverは16TBまで)しており、ダウンタイムなしでスケールできます。さらにサーバースペックが足りなければ、画面操作で容易に変更できます。このように運用の大変な部分が大幅に軽減されるのです。
可用性の確保については「マルチAZ配置」という機能を有効にするだけで、アベイラビリティーゾーンをまたいだ冗長構成がすぐに構成できます。この作業を手動で行う場合、オンプレミスですと数日は普通にかかりますが、自動かつ数分で完了するのには個人的に驚いたポイントでした。
実際は図2のように別のアベイラビリティーゾーン内にデータベースが二つ起動(プライマリとスタンバイ)して、データの同期を行う構成になります。もしプライマリのデータベースが壊れても、スタンバイにデータが同期されているのでデータを失いません。またシステムが止まらないように処理をスタンバイに切り替える必要がありますが、これも自動(1~2分で切り替え)で行います(フェイルオーバー)。
Amazon RDSはAmazon VPC内で起動できるため外部のアクセスから独立させることができます(Amazon VPCはLESSON:06を参照)。データの保管には暗号化が必要となる場合もありますが、Amazon RDSでは透過的なストレージの暗号化に対応しています。また通信の暗号化も行えるので、セキュアにアクセス可能です。さらにAWSではさまざまなコンプライアンスに準拠しているので、安心して利用できます。