みなさん、こんばんは。新人のRenです。AuroraもRDSもよく使われるサービスですよね。前回に続き、今回はAuroraについての特徴やその他のDBサービスについて、お伝えします!

Auroraとは

Amazon Auroraとは、RDSのオプションの1つであり、MySQLやPostgreSQLと互換性があるDBです。互換性はありますが、この2つよりも性能が高いです。Auroraは、エンタプライズ規模(全社規模)のリレーショナルデータベースにデータを保存するときに利用します。データの6つのコピーを3つのAZにレプリケート(コピーを保存・更新して常に同期する)していることで可用性が非常に高くなっていること、不要な入力/出力オペレーションを排除することでデータベースのコストを削減することができることなどがメリットとなっています。

他にどのようなDBが利用できる?

AWSにはRDSのようなリレーショナルデータベース以外にも、非リレーショナルデータベースを利用することが出来ます。そんな非リレーショナルデータベースについて3つほど紹介したいと思います。

Amazon Dynamo DB

まずは、非リレーショナルデータベースとして有名なAmazon Dynamo DBについて説明していきます。Dynamo DBは、サーバーレスのキーバリュー(NoSQL)データベースです。特徴・メリットは、容量の変更に合わせて自動的にスケールし、一貫したパフォーマンスを維持することと、1日に10兆件を超えるリクエストを処理するように設計されていることです。そのため、大量のアクセスを処理するときに使います。ゲームプラットフォームのスケーリングやソフトウェアアプリケーションの開発をするときなどに使われています。高い可用性と自動的なスケーリング機能、レプリケーション機能などを持っているので、非常に使いやすいものであると感じられます。

Mongo DB

次にMongo DBについて紹介します。Mongo DBはドキュメント指向型データベースです。ドキュメント指向型データベースとは、ドキュメントの形式でデータを管理するデータベースのことです。特徴・メリットは、処理速度が速いこと、「シャーディング」という機能による負荷分散や「レプリカセット」という機能による冗長化の実現が可能であること、外部のシステムとの連携が容易であること、複雑なデータを簡単に扱えることなどがあげられます。一方で、データの一貫性を保持しようとはしないため、データの一貫性が重要なシステムではリレーショナルデータベースを利用するのが向いていると思われます。

Amazon Document DB

最後に、Amazon Document DBについて紹介します。Document DBは、完全マネージド型のデータベースサービスです。完全マネージド型とは、本来であれば必要であるシステムの管理業務をサービス提供側(AWS)がすべてやってくれるという意味です。またクラウド内で、先ほど紹介したMongo DBと互換性のあるデータベースを簡単にセットアップ、運用、スケールすることが出来ます。そのため、同じアプリケーションコードを実行し、同じドライバーとツールを使用できるようになっています。特徴・メリットは、サーバー管理が不要であること、ストレージが無制限で自動的にスケーリングされること、処理速度が速いことでパフォーマンスが向上することなどがあげられます。

今回紹介したキーバリューデータベースやドキュメント型データベース以外にも、表中の同じ列のデータをまとめて記録するカラム型データベースやグラフ構造でデータ間の繋がりを表現することができるグラフ指向データベースなどがあります。データベースを利用するうえで大切なことは、【目的に合わせて使う】ことなので様々なデータベースを見ながらと目的とすり合わせていくことがベストであると思います。

RDSと比較したときの非リレーショナルデータベース(NoSQL)のメリット

ここまで様々な非リレーショナルデータベースを見てきて気がついている方もいるかもしれませんが、RDSと比較したときのメリットについてお話していきます。

NoSQLには、DynamoDB、ElastiCache、Redshift、Neptuneなどがあり、AWSでは現在全部で9種類扱うことが出来ます。NoSQLとは、「Not Only SQL」と言われ、RDBMSでは解決できない問題を解決するためのDBです。データの中身が自由で読み込みが速いため、RDSで扱うことのできなかったデータを扱うことが出来ます(表形式で保存できないデータ等)。そのため、画像や音声データを大量に保持したい場合などに向いています。

先ほど紹介したようにNoSQLにはキーバリュー型やドキュメント指向型など様々なデータモデルが利用できます。RDSでは、利用できるデータモデルはテーブル構造に固定されているので様々なデータモデルを利用することはできません。また、NoSQLはRDSと比較するとより大量のデータを高速に処理することが可能です。RDSでは、データが肥大化すると処理速度が落ちてしまうのに対して、NoSQLでは性能を維持したまま高速で処理をしてくれます。処理性能でもう1つ、システムの拡張・分散性といった部分でNoSQLはメリットがあります。RDSのシステムは原則として1台のサーバーで動作するように設計されていますが、近年のデータ量増加によって1台のサーバーだけでは処理速度が足りなくなってしまうことがあるという現状があります。そこで、スケールアウト(サーバーの数を増やす)に対応できるNoSQLであれば、処理速度が足りなくなるということはなく、システムの拡張・分散性が高いと言えます。

まとめると、様々なデータモデルを利用できること、大量のデータを高速に処理できること、システムの拡張・分散性が高いことの3つが分かりやすいRDSと比較したときのメリットであると思います。システムで大切なことは何かを考えながらデータベースを選べるととても良いと思います。