AWSのデータベースを整理してみた
皆さん、こんにちは。技術開発グループのn-ozawanです。
現在オンピック開催中のパリは、日本最北端の北海島稚内市よりも北に位置しています。ヨーロッパが北海道と同じかそれ以上の緯度に位置しているにも関わらず温暖な気候となっているのは、暖かい北大西洋海流と偏西風の影響と言われています。
本題です。
AWSではリレーショナルDBからNoSQLなど、幅広くデータベースを提供しています。今回は「AWSって何のDBを提供しているの?」をテーマに、AWSが提供するDBを整理してみました。
目次
Amazon RDS
Amazon RDSはリレーショナルDBを提供します。利用可能なDBは以下の通りです。
- MySQL
- MariaDB
- PostgreSQL
- Oracle
- Microsoft SQL Server
- IBM DB2
Amazon RDSは、DBの運用に関係する機能を提供します。例えば、自動バックアップやソフトウェアアップデートがあります。DBが自動的にアップデートされるため、常に最新の状態を保つことが出来ます。また、リードレプリカという読み込み専用のデータベースを構築することも出来るため、負荷分散が可能となります。

Amazon Aurora
Amazon Auroraは、リレーショナルDBをサーバーレスで提供します。利用可能なDBは以下の通りです。
- MySQL
- PostgreSQL
通常のRDSでは、DBを稼働するためのEC2インスタンスが必要になります。Amazon AuroraではEC2インスタンスなしで利用可能です。これによりサーバーの運用コストが下げられます。

NoSQL関連
NoSQLとは、特定のデータモデルに特化したDBです。AWSはそれぞれの用途に合わせたNoSQLを提供しています。
Amazon DynamoDB
Amazon DynamoDBは、Key-Value型のNoSQLです。Key-Value型とは、KeyとValueを紐付けて管理する方式です。JavaなどであればMapをイメージすると良いでしょう。
DynamoDBは小規模から大規模まで、あらゆるユースケースに対応したDBで、一貫して1桁ミリ秒のパフォーマンスを実現します。サーバーレスで稼働し、高い可用性を持ちます。

Amazon ElastiCache
Amazon ElastiCacheは、インメモリ型のNoSQLです。インメモリ型とは、その名の通り、内部メモリにデータを保存するデータベースです。HDDやSSDなどのディスクドライブにアクセスしないため、応答速度が非常に高いのが特徴です。
Amazon ElastiCacheは、MemcachedとRedisの2つを提供します。MemcachedとRedisはAWSに関係なくそれぞれがオープンソースとして公開されているNoSQLです。MemcachedはシンプルなKey-Valueでありマルチスレッドにて並列処理が可能です。一方、Redisはlistやsetsなどの多様な構造をサポートし、スナップショットなども機能も充実しているため、Memcachedよりも永続性に優れています。
Amazon DocumentDB
Amazon DocumentDBは、ドキュメント型のNoSQLです。ドキュメント型とは、JSONやXMLなどの記述文書を管理するデータベースです。Amazon DocumentDBは、MongoDBと互換性を持っていますので、MongoDBからの移行をサポートしているのも特徴の1つです。
Amazon Neptune
Amazon Neptuneは、グラフ型のNoSQLです。グラフ型とは、データ間の関連性を体系的に管理するデータベースです。リレーショナルDBとの違いは、リレーショナルDBは厳格なテーブル構造で管理するのに対して、グラフ型はデータとデータを結び付けてその関係性をネットワークとして管理します。
Amazon Timestream
Amazon Timestreamは、時系列データに特化したNoSQLです。例えばトレースログやアクセスログなど、時系列で扱う必要のあるデータに特化しています。もちろんリレーショナルDBなどでも時系列データを扱うことは出来ますが、Amazon Timestreamはパフォーマンスなどが最適化されています。
Amazon Keyspaces
Amazon Keyspacesは、Cassandraと互換性を持ったKey-Value型のNoSQLです。もちろんCassandraクエリ言語(CQL)に対応し、高い可用性や自動バックアップなどにも対応しています。
おわりに
AWSでは幅広くDBをサポートしていますので、どれを選べばいいのか悩みますね。ただ、NoSQLは用途がはっきりしているので、あまり悩まないかもしれません。今回紹介したDB以外にも、Amazon RedshiftやAmazon QLDBなどもありますので、興味ある方は調べてみてください。
ではまた。