AWS - データベース

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

AWSは、用途に応じて選べる15種類以上のデータベースサービスを提供している。

リレーショナルデータベースでは、MySQL、PostgreSQL等が使用できるAmazon RDS、AWSが独自開発した高性能なAmazon Auroraが主力サービスである。
NoSQLデータベースでは、ミリ秒単位の高速アクセスが可能なAmazon DynamoDBが代表的で、ゲームやIoT等の大規模システムに適している。
データ分析用にはAmazon Redshift、グラフデータベースにはAmazon Neptune等、専門的な用途に特化したサービスも揃っている。

これらは全てマネージド型サービスとして提供されるため、サーバ管理やパッチ適用等の運用負荷が大幅に軽減され、開発者はアプリケーション開発に集中できる。

個人学習では、無料利用枠が充実しているRDSとDynamoDBから始めることで、実務で必要なリレーショナルとNoSQL両方のデータベース設計を実践的に学習することができる。


リレーショナルデータベースサービス

Amazon RDS (Relational Database Service)

Amazon RDSは、リレーショナルデータベースのセットアップ、運用、スケーリングを簡単に行うことができるマネージド型サービスである。
MySQL、MariaDB、PostgreSQL、Oracle Database、SQL Serverという6つのデータベースエンジンから選択できる。

一般的に、データベースを構築する際にはサーバーの準備やインストール・設定が必要であるが、Amazon RDSではインストール、パッチの適用やバックアップも自動で行うことができる。
このマネージド型サービスの最大のメリットは、データベースの運用管理をAWSに委任できることで、開発者はアプリケーション開発に集中できる点である。

RDSでは、自動バックアップ期間を0~35日で設定でき、デフォルトは7日間となっている。
0日に設定することでバックアップを無効化することも可能となる。

また、マルチAZ配置を行うことで、高可用性を実現することができる。
マルチAZ構成では、プライマリサーバとスタンバイサーバが異なるアベイラビリティゾーンに配置され、障害時には自動的にフェイルオーバーが実行される。

Amazon Aurora

Amazon Auroraは、AWSがクラウド向けに独自開発したリレーショナルデータベースで、MySQLおよびPostgreSQLと互換性がある。
標準的なMySQLと比べて最大5倍、PostgreSQLと比べて最大3倍高速である。

Auroraの最大の特徴は、その独自のアーキテクチャにある。
AuroraはDBクラスタという単位で提供され、DBインスタンス、クラスタボリューム、エンドポイントの3つで構成される。

Auroraのストレージは6重化されており、1つのアベイラビリティゾーンに2個のデータ、3つのAZに跨って合計6個のコピーが保持されるため、ディスクが3本故障しても読み込みが可能である。

料金面では、RDSと比較するとAuroraの方が高い傾向にあるが、Auroraは高速フェイルオーバーや高い可用性といった特徴があるため、これらのメリットを重視する場合にはAuroraの採用が適している。
特にシングルAZ構成でも、Auroraはストレージ部分が3つのAZにまたがって6つのコピーを持つため、"データの耐久性は必要だがある程度の障害が許容できる要件"であれば、
RDSのマルチAZ構成よりもコストパフォーマンスが良い。

Auroraでは自動バックアップ期間は1~35日で、デフォルトは1日となっており、バックアップを無効にすることはできない。

また、Auroraでレプリカを追加する場合、インスタンスのみが増えていく。
これに対してRDSでは、リードレプリカを追加すると "インスタンス + EBS + ミラーリングEBS" のセットが増えていく。

Amazon Redshift

Amazon Redshiftは、PostgreSQLと互換性のある大規模データ向けのデータウェアハウスで、主にデータ分析に用いられる。

小規模なデータから大規模まで柔軟にスケールでき、オンプレミスのデータウェアハウスと比較してコストを抑えた構築ができる。
BIやAIと組み合わせ、Amazon Redshiftに保存したデータを可視化・分析するケースが多く見られる。


NoSQLデータベースサービス

Amazon DynamoDB

Amazon DynamoDBは、AWSが提供するフルマネージドのNoSQLデータベースサービスで、キーバリュー型とドキュメント型の両方のデータモデルをサポートしている。

DynamoDBは、大規模な分散システムのために設計されており、高いスケーラビリティと低レイテンシーが特徴である。
DynamoDBは、あらゆる規模のワークロードでレイテンシーを10ミリ秒未満に維持するように設計されており、
10ユーザーの場合でも1億ユーザーの場合でも、一貫した1桁ミリ秒のパフォーマンスを提供する。

DynamoDBでは、サーバのプロビジョニングや、ソフトウェアへのパッチの適用、管理、インストール、保守、運用は必要ない。
ダウンタイムのないメンテナンスを提供し、メンテナンスウィンドウも存在しない。

DynamoDBの主な特徴

  • 自動スケーリング機能
    DynamoDBは、アプリケーションのトラフィックが増減するにつれて、自動的にスループット容量を調整する。
    開発者はトラフィックの変動に対応するためにスループット設定を手動で調整する必要がない。

  • 高可用性とデータ耐久性
    DynamoDBはデータを自動的に複数のアベイラビリティゾーンに渡って複製し、高い可用性とデータ耐久性を実現する。
    同じAWSリージョン内の3つの施設間でデータが同期的にレプリケートされます。

  • 料金体系
    DynamoDBの料金は、使用したストレージの量、プロビジョンされたスループット、データ転送量に基づいて計算される。
    オンデマンド価格設定またはプロビジョンドスループット価格設定のいずれかを選択でき、アプリケーションの使用パターンに応じてコストを最適化できる。

  • ストレージコスト
    東京リージョンでは、ストレージ料金は0.285 [USD/GB]
    Auroraが0.11 [USD/GB]であることと比較すると約2倍、S3のStandardが0.025 [USD/GB]と比較すると約10倍となるため、大容量のデータ保管には向いていない。
    ただし、Standard-IAというストレージクラスを選択することで、アクセス頻度の低いデータについては最大60%のコスト削減が可能となる。

  • ユースケース
    DynamoDBは、ミリ秒単位のアクセスレイテンシーが求められるシステムと相性が良く、モバイル、Web、ゲーム、広告技術、IoTのようなサービスのバックエンドとしてよく利用されている。
    オンライン広告のリアルタイムビッドシステムでは、毎秒数百万のリクエストを処理し、ユーザがWebページを訪れた瞬間に最適な広告を表示する必要があり、DynamoDBはこの高いスループット要件と低遅延を実現している。
    また、DynamoDBはAWS Lambdaとも相性が良く、API Gateway + Lambdaと合わせて利用されることが多い。


Amazon DocumentDB

Amazon DocumentDBは、MongoDBと互換性のあるドキュメント型データベースサービスである。

AWS側でスケーリングやバックアップの管理タスクを行うため、ユーザーがデータベースの管理タスクを気にする必要はない。

主な利用用途

  • ショッピングサイトのカタログ管理
  • ユーザプロファイル管理



その他の特殊用途データベース

Amazon ElastiCache

Amazon ElastiCacheは、RedisとMemcachedの両方と互換性のある、フルマネージドインメモリキャッシングサービスで、低レイテンシーで高スループットのワークロードに対応します。
アプリケーションからのリアルタイムレスポンスを必要とする場合に、ディスクベースのデータストアではなく、インメモリデータストアとして利用される。

Amazon Keyspaces

Amazon Keyspacesは、Apache Cassandraと互換性があるマネージド型のデータベースである。
Apache Cassandraで使用されるクエリ言語APIコードやドライバ、開発者ツールをそのままAWS上で使用することができる。

システムの規模にかかわらず、安定的に1桁ミリ秒の応答時間を提供できるよう、AWSがサーバの利用状況に応じて自動でスケーリングする。

Amazon Neptune

Amazon Neptuneは、クラウド向けの高速なグラフ指向データベースサービスである。
GremlinとSPARQL向けのオープングラフAPIをサポートしており、ナレッジグラフやデータの不正検出などで利用されることを想定している。

Amazon Timestream

時系列データの保存・分析に特化したデータベースで、IoTアプリケーションの記録や金融取引の記録など、様々な時間毎のデータを分析する際に利用される。

Amazon QLDB

Amazon Quantum Ledger Database (QLDB) は、AWSがフルマネージドする台帳データベースサービスである。
SQL互換クエリ言語が利用でき、銀行取引の履歴追跡やサプライチェーンでの商品の追跡などに利用される。


データベース選択のポイント

AWSでは、多様なデータベースサービスを用途に応じて使い分けることにより、最適なシステムアーキテクチャを構築することができる。
データベースを選択する際は、以下に示す観点から検討することが重要である。

  • データの性質
    構造化されたデータでトランザクション処理が必要な場合はRDSやAurora、柔軟なスキーマが必要な場合はDynamoDBやDocumentDBが適している。
  • パフォーマンス要件
    ミリ秒単位の低レイテンシーが求められる場合はDynamoDB、大規模なデータ分析が必要な場合はRedshiftが適している。
  • スケーラビリティ
    急激なトラフィック増加が予想される場合は、自動スケーリング機能が充実しているDynamoDBやAuroraが有利となる。
  • 運用コスト
    マネージド型サービスを利用することで、データベースの管理負荷を大幅に削減できるが、料金体系やストレージコストも考慮に入れる必要がある。



コスト

データベースサービスの料金は、「安い・高い」という比較は難しい。
なぜなら、それぞれのサービスで料金体系が異なり、使い方によって大きく変動するからである。

例えば、RDSとAuroraでは インスタンスの稼働時間 + ストレージ容量で課金されるが、DynamoDBでは ストレージ容量 + データの読み書き回数 で課金される。
つまり、同じ100[GB]のデータを保存する場合でも、データへのアクセス頻度によって最終的な料金が大きく変わる。

学習用途で最もコストを抑えられる順番

個人学習において、無料利用枠を最大限活用した場合のコストの低い順に並べる。

  • Amazon DynamoDB (最もコストを抑えられる)
    DynamoDBの無料利用枠は新規アカウント作成から12ヶ月経過した後も永続的に利用できるという大きな特徴がある。
    月25[GB]のストレージ、読み取り2億5000万リクエストユニット、書き込み2億5000万リクエストユニットが無料枠として提供される。
    個人学習用途であれば、この無料枠内で完結することが多いため、実質的に無料で使い続けることが可能である。

  • Amazon RDS
    新規アカウントから12ヶ月間は、db.t3.micro または db.t4g.micro インスタンスを月750時間 (24時間×31日 = 約744時間のため常時稼働可能) 無料で使用できる。
    ストレージも20[GB]まで無料である。
    12ヶ月の無料期間が終了した後は、最小構成の db.t4g.micro インスタンスで東京リージョンの場合、月額約2,000円〜3,000円程度のコストが掛かる。
    ただし、使用しない時間帯にインスタンスを停止すれば、その分の料金は発生しない。
    例えば、週末だけ学習するような使い方であれば、月額数百円程度に抑えることも可能である。

  • Amazon Aurora
    学習用途では比較的コストが高めである。
    Auroraには無料利用枠が用意されていないため、使い始めた瞬間から課金が始まる。
    最小構成のdb.t4g.mediumインスタンスで月額約5,000円から6,000円程度、さらにストレージとIOリクエストの料金が加算されます。Auroraは高性能で素晴らしいサービスですが、学習の初期段階では標準的なRDSで十分に学べることを考えると、コストパフォーマンスの観点からは後回しにすることをお勧めします。

  • Amazon Redshift
    分析用途に特化したサービスのため、更にコストが高くなる。
    最小構成でも月額約20,000円程度からとなり、個人の学習用途としては現実的ではない。
    ただし、Redshift Serverlessという新しいオプションを使えば、使った分だけの課金となり、実験的に触ってみる程度であれば数百円から試すことも可能である。


学習を始めたばかりの段階では、まず、DynamoDB と RDS の無料利用枠を活用することで、最初の12ヶ月間はほぼ無料でデータベースの学習を進めることができる。
この期間中に、リレーショナルデータベースとNoSQLデータベースの両方の基礎をしっかり固めることができる。

12ヶ月の無料期間が終了した後は、DynamoDBの永続的な無料枠を活用しながら、RDSについては必要な時だけインスタンスを起動するという運用方法がよい。
AWSにはインスタンスの自動起動・停止をスケジュールする機能もあるので、これを活用すれば手間なくコストを管理できる。

また、AWS Cost Explorerという機能を使えば、日々の利用料金をリアルタイムで確認ですることができる。
"予想外の課金が発生していないか"、"無料枠の範囲内で使えているか"を確認できるため、安心して学習に集中できるようになる。