AWSのデータベースサービスって、
いっぱいあって何を使っていいかわかりませんよね?
「Aurora?」
「DynamoDB??」
いっぱいあり過ぎて、何をどう使うのかがわからない。
「よくわからないから、とりあえず一番使われているRDSを使うか・・・」
ということが多いと思います。
今回はそんなAWSのDBサービスについて、
各種特徴をわかりやすく解説していきたいと思います。
AWSのDBサービス一覧
AWSにはどのようなデータベースのサービスがあるのでしょうか?
まずは一覧を書き出してみたいと思います。
(※2019年1月現在のサービスです。)
- RDS
- DynamoDB
- ElastiCache
- Neptune
- Amazon Redshift
- Amazon DocumentDB
さらに・・・
「Amazon Timestream」と「Amazon Quantum Ledger Database」
というデータベースも現在(2019.1時点)プレビュー(ベータ版?)版としてありましたが、
こちらはまだ正式リリースされていないものですので、対象外とさせていただきます。
「あれ?Auroraは?」
と、思われた方もいらっしゃるかと思います。
AWSの人気サービスの「Aurora」は、データベースエンジンの一つという括りでして、
RDSで選択できる「MySQL」や「PostgreSQL」と同列とお考えいただければよろしいかと思います。
各データベースサービスの特徴
では、各データベースサービスの特徴概要をまとめてみます。
RDS
「MySQLやOracleといったRDBMSならコレ!」
言わずと知れたAWSでよく使われているDBサービス。
フルマネージド型のサービスであり、
対象としているデータベースの種類は、リレーショナルデータベース!
リレーショナルデータベースとは、
例えば異なるテーブルがIDなどのキーによって関連づいたような複雑なデータ構造が作れるもの。
トランザクションという論理的に一つにまとまった処理単位でデータが書き換えられるため、データの整合性が保証されている。
データの操作にはSQL言語を使う。
データの読み込み(参照系)については、スケールアウトができるものの、
基本的にスケーリングはスケールアップ(ダウン)となる。
データが膨大になればなるほど処理時間が長くなるのも特徴です。
DynamoDB
「高いスケーリング性+低レイテンシはコレ!」
フルマネージド型のサービス。
対象とするデータベースは、Key-Value型のデータベース。
ただし、JSONデータも格納できることから後述するドキュメント型データベースとも言えます。
Key-Value型のデータベースとは、
名前の通り「キー」と「値」がそれぞれ一対になっている以下のようなデータを対象としたデータベース。
例)お天気情報
キー:値
日付:2019年1月31日
天気:晴れ
気温:10℃
RDSとは異なり、スキーマ(DB)という概念がない。テーブル単位で作成する。
また、データが膨大になっても処理時間が遅くなるということはない。
スループットについては、お金を払えばどこまでだって上げられる。
低レイテンシで、かつデータが大きくなっても遅くなりづらいという特徴から、
スマホアプリのデータ蓄積等でよく使われている注目のサービス。
ちなみにNoSQL、つまりSQLでの操作ではないため、SQLを知らなくても操作が可能です。
ElastiCache
「高速な一時的データ保管といったらコレ!」
フルマネージド型のインメモリキャッシュ。
インメモリキャッシュとは、DBの参照系負荷を低減するため、
メモリ上にデータを保存し、高速にデータのやりとりを行うことです。
ただし、メモリ上のデータ保存のためノード障害の発生によりデータが吹っ飛ぶというリスクがあります。
低コストで利用が可能。
以下のようなケースで利用されます。
- RDSの参照系のスループットを出すためのリードレプリカの代替
- 一時的なデータ保存(セッション情報、アプリ情報)
エンジンは「Redis」と「Memcached」という2つのタイプがある。
Neptune
「レコメンドや経路などネットワーク的なデータ構造を対象とするならコレ!」
フルマネージド型のサービス。
RDSと何が違うって、そもそも対象としているデータベースが違う。
対象としているデータベースは、グラフ型データベース!
グラフ型データベースってあまり聞きなれない言葉ですよね?
グラフ型データベースとは、「オブジェクト」と「関係性」という2つの属性が基本となるデータ構造です。
人間関係、通信ネットワーク、レコメンデーションエンジンなど、ネットワーク構造をもつものを表現するのに適している。
リレーショナルデータベースでは複雑になってしまうが、
グラフ型データベースであれば簡単に、高速に扱うことが可能です。
出典:アマゾンウェブサービス
Amazon Redshift
「DWHやBIといった大規模分析用データベースの場合はコレ!」
フルマネージド型のサービス。
対象とするデータベースは、列指向データベース。
ペタバイト級の超大容量のデータも扱え、実際にはデータウェアウェアハウスとして分析系のデータベースとして使われます。
列指向データベース、これもあまり聞かない言葉ですよね。
実は列指向データベースの基礎となっているのは、リレーショナルデータベースです。
リレーショナルデータベースは、別名「行指向データベース」ともいいます。
リレーショナルデータベースが「行」であるのに対し、列指向データベースは「列」となります。
以下の表を例えとします。
売上金額について分析したいので、金額のデータだけ欲しいです。
この場合、行を対象とする行指向データベースでは、1行とってくるだけで様々なデータを取得しますよね?
金額についても取得しますが、同時にID、日付、品名、単価や数量まで取ってきてしまいます。
でも列指向データベースであれば、金額列だけを取ってこれます。列を対象としているからです。
もちろん行指向だって、特定の列を取ってくるようなSQLを書けばできます。
でも逆にいうと、行指向は、その手間をかけないと特定の列が取ってこれないんです。
その手間をかけるというのが、大量のデータになればなるほど負荷になってくるんです!
列指向データベースが分析系に強いと言われるのは、この考え方が根本にあります。
Amazon DocumentDB
「MongoDBからの移行といったらコレ!」
フルマネージド型のサービス。
MongoDBという有名なDBとの互換性をもっていて、
オンプレミスやEC2でMongoDBを運用していて、フルマネージドサービスに切り替えるということで、
Amazon DocumentDBへ移行させるというパターンを狙っているように思えます。
MongoDBからの移行ツールもありますので、移行するのは簡単です。
対象とするデータベースは、ドキュメント型データベース。
ドキュメント型データベースとは、JSONやXMLなど様々なデータを1つのドキュメントとしてそのまま格納できるデータベースです。
シンプルなため使いやすく、コンテンツの管理に向いています。
スケーラビリティが高いというのも特徴の一つです。
いかがでしたでしょうか?
さまざまなデータベースサービスがAWSにはありますが、
それぞれが独自の特徴を持っています。
今回の記事がデータベースの選定にお役立ちいただけたら幸いです。
以上、hidesanでした!