AWS認定クラウドプラクティショナー資格】⑦データベースサービス


はじめに

今回は、AWSの「データベースサービス」の概要について勉強した内容を紹介します。

RDS」「DynamoDB」に絞って、その特徴をまとめていきます。

参考書籍

『AWS認定資格試験テキスト AWS認定クラウドプラクティショナー』
本記事は、本書の第8章に相当

項目

  1. RDS
  2. DynamoDB

1. RDS

Amazon RDSは、マネージド型リレーショナルデータベースで、データベースエンジンをAmazon Aurora、MySQL、MariaDB、Oracle、Microsoft SQL Server、PostgreSQLといった一般的な 6 種類のエンジンから選択できます。
つまり、既存のデータベースで現在既に使用しているコード、アプリケーション、ツールを Amazon RDS で使用できます。
Amazon RDSはプロビジョニング、パッチの適用、バックアップ、リカバリ、障害検知、リペアなど、データベースのルーティンタスクを処理します。
業界標準のリレーショナルデータベースにコスト効率の高いサイズ変更可能な容量を提供し、一般的なデータベース管理タスクを管理します。
AWSユーザーガイドより

(1)概要

Amazon Relational Database Service(RDS)、リレーショナルデータベースを提供するサービスです。

「リレーショナルデータベース」とは、事前定義された、関連があるデータ項目の集合体です。

この項目は、列と行を持つテーブルのセットとして構成されます。テーブルは、データベースに表現されるオブジェクトに関する情報を保持するために使用されます。

イメージとしては、高機能なExcelのようなものです。

リレーショナルデータベースは、規模を問わずに利用されており、個人用途から大企業の社内システムまで、幅広いシーンで活躍しています。

Amazon Aurora、MySQL、MariaDB、Oracle、Microsoft SQL Server、PostgreSQLの6つを使用できます。

データベースのインストールやバックアップなどのセットアップをしなくても、データベースが利用できる環境が提供されているため、契約後すぐにAWS上でデータベースを使用することができます。

(2)EC2との違い

Amazon Aurora以外は、EC2に各データベースエンジンをインストールして使用することができます。

主な違いは、使用メリットにあります。

オンプレミスでデータベースサーバーを構築する場合、電源・空調・ネットワーク回線・ラックスペースの確保・ラッキング・物理サーバーの管理・OSのインストール・データベースの管理全てを行わなければいけません。

EC2を起動したサーバーにデータベースエンジンをインストールする場合、物理要素やハードウェアとOSのインストールまではAWS側に任せることができます。

しかし、この場合だと、もしOSのモジュールに脆弱性が見つかったら、パッチの適用が必要です。

データベースのインストール・バックアップ・マイナーバージョンのバージョンアップ・複数のAZをまたいだ高可用性の確保などを手動で行わなければいけません。

RDSでデータベースエンジンを使用した場合、これらの管理は全て必要なくなります。

メンテナンス・バックアップ・高可用性について、AWS側で担保してくれます。

メンテナンスについては、週に1回、設定した時間に自動的に行ってくれますし、バックアップについては、デフォルトで7日間分の自動バックアップをしてくれます。

※バックアップ期間は0〜35日間まで設定できますが、それ以上になると、スナップショットを作成する設定を行う必要があります。

※RDSのバックアップ機能である「ポイントタイムリカバリー」を使えば、最大5分前までのリカバリが可能です。RDSの起動が完了したタイミングで、自動でトランザクションログが保存され始めます。

さらに、RDSは、「いつ壊れてもおかしくない(Design for Failure)」という原則で設計されているので、単一障害点とはなりません。

マルチAZ配置をオンに設定すると、AZをまたいでレプリケーションが自動で行われます。

レプリケーションとは、「複製(レプリカ)を作ること」の意味。同じネットワーク内、もしくは遠隔地にサーバーを設置し、リアルタイムにデータをコピーする技術のこと。マスターのデータベースと全く同じ内容のデータベースを作成できるため、負荷分散やホットスタンバイに有効な手段として普及している。

マスターに障害が発生しても、自動的にフェイルオーバーが行われます。

フェイルオーバーとは、稼働中のシステムで問題が生じてシステムやサーバーが停止してしまった際に、自動的に待機システムに切り替える仕組みのこと。

これらも、AWS側の責任で行われます。

Amazon Aurora、MySQL、MariaDB、PostgreSQLではリードレプリカを作成することができます。

これにより、読み込みの負荷をマスターデータベースから軽減できます。

他のリージョンにリードレプリカを作成することもでき、これを、クロスリージョンリードレプリカといいます。

(3)Amazon Aurora

Amazon Auroraは、AWSがクラウドに最適化して再設計したリレーショナルデータベースエンジンです。

MySQL、PostgreSQLのモデルをサポートしています(MySQL、PostgreSQLを使用しているアプリケーションの場合、そのままAuroraを使うことができる)。

Auroraを利用すると、

・ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップといった時間のかかる管理タスクが自動化される
・リードレプリカは15個作成できる
・ストレージシステムは、分散型で耐障害性と自己修復機能を備えており、データベースインスタンスごとに最大128TBまで自動的にスケールされる
・MySQLに比べて5倍の性能、PostgreSQLと比べて3倍の性能
・ディスク容量を見込で確保しなくても自動で増加してくれる
・商業用データベースと同等のパフォーマンスを、10分の1のコストで実現できる

といったメリットがあります。

(4)DMS

AWS Database Migration Service (AWS DMS)は、オンプレミスからAWS、または、AWSからAWSのデータベースの移行をする場合、迅速かつ安全に移行してくれる機能を持っています。

ざっくりいうと、オンプレミスや他社クラウドで稼働するDBを、AWSのあれこれへ簡単に移行させることができるツールです。

移行中でも、データベースは完全に利用可能な状態に保たれ、データベースを利用するアプリケーションのダウンタイムを最小限に抑えられます。

DMSへのデータ転送はすべて無料で、「RDS」や「EC2」と「DMS」との間のデータ転送も無料です。

なお、データベースを「Amazon Aurora」「Amazon Redshift」「Amazon DynamoDB」などに移行する場合は、無料で6ヶ月間利用できます。

AWS DMSを実行させるには、まず「レプリケーションインスタンス」を作成して、ソースおよびターゲットの「エンドポイント」を指定します。さらに、「タスク」を作成して移行を実行させる、という流れです。

どの手順も高度なスキルは不要で、単純な作業だけで済みます。

2. DynamoDB

Amazon DynamoDBは、完全に管理されたNoSQLデータベースサービスであり、シームレスなスケーラビリティを備えた高速で予測可能なパフォーマンスを提供します。
DynamoDBを使用すると、分散データベースの運用とスケーリングの管理上の負担を軽減できるため、ハードウェアのプロビジョニング、セットアップと構成、レプリケーション、ソフトウェアのパッチ適用、またはクラスターのスケーリングについて心配する必要がありません。
DynamoDBは、保存時の暗号化も提供します。これにより、機密データの保護に伴う運用上の負担と複雑さが解消されます。
AWSユーザーガイドより

(1)概要

Amazon DynamoDBは、ハイパフォーマンスなアプリケーションをあらゆる規模で実行するために設計された、フルマネージド、サーバーレスのNoSQLデータベースです。

NoSQLは非リレーショナルなデータベースを表す言葉で、「データベースの分類」を表します。 NoSQLはRDBのようにテーブル構造に固定することなく、さまざまな形式のデータをそのまま格納できます。

DynamoDBを使い始めるときは、テーブルの作成から始めます。

データベースサーバーとしてインスタンスを作成する必要はありません。

最低限の設定では、テーブル名とプライマリーキーを決めれば大丈夫です。

使用するときは、リージョンを選択することになります。

最初からマルチAZな環境になっているため、AZを意識する必要はありません。

使用時は、書き込みと読み込みのキャパシティユニットを設定することができます。これは、オートスケールさせることが可能です。

モバイル、ゲーム、IoT、大規模なWebシステムのバックエンド、サーバーレスアーキテクチャ、ジョブステータス管理、セッション管理、クリックストリームデータなど、様々なユースケースで使用されています。

データ容量は無制限で、使用容量に対して課金されます。

(2)RDSとの違い

DynamoDBとRDSの大きな違いは、RDSはリレーショナルデータベースであり、DynamoDBはNoSQLであるところです。

RDSは、大量のデータ更新や読み込みを必要とする処理には向いていません。

垂直スケーリングによりスケールアップすることはできるものの、大量のアクセスに対しては低速での処理になってしまうのです。

しかし、DynamoDBでは、水平スケーリングによるスケールアップが可能なので、大量のアクセスやデータ処理があっても、性能を落とすことなく高速で処理を行うことができます。

ただ、RDSならばトランザクションを必要とする処理や複雑な処理ができるものの、DynamoDBではそういったことには向いていません。

また、データの構造も違います。

RDSはSQL型のテーブル形式ですが、DynamoDBはNoSQL型のテーブル形式です。

DynamoDBでは、一つのデータを「アイテム」として扱い、キーとして設定している属性と値さえあれば、それ以外は動的で自由なのです。

キーとバリューの組み合わせで作られるシンプルなデータモデルが基本だと考えてもらえらばいいでしょう。

画像・音声データなどの非構造データを大量に保持したい場合などに利用できます。

DynamoDBを使いたいときは、NoSQLは大量のデータ利用とシステムの柔軟性を実現したい場合に利用するのが良いと言えそうです。

参考サイト

Amazon RDS アーキテクチャ概要
AWS Documentation
Amazon RDSってなに?
AWSのデータベースAmazon RDSとは?
Amazon RDSの基本を解説、作成方法やAuroraでの利用のメリットを詳しく
5分でわかる「RDS」
AWS DMSとは?環境を構築する4つの流れとメリットを解説
NoSQL データベースとは
リレーショナルデータベースとNoSQLデータベースの違いとは?
NoSQLとは?その特徴や利用するメリット、活用事例を解説

参考書籍

※ 『AWS認定資格試験テキスト AWS認定クラウドプラクティショナー』

Amazonはこちら

楽天はこちら