ElasticCacheとDynamoDBとRDSの違い
| ElastiCache | DynamoDB | RDS | |
|---|---|---|---|
| 速度(レイテンシー) | 低レイテンシー(5ms未満) | ・RDSよりは早いが、ElasticCacheより遅い。 ・低レイテンシー(10 ミリ秒未満) |
遅い(20ms) |
| 容量 | 制限なし | あり(64TB) | |
| 永続性 | ×(インメモリ) | ○ | ○ |
| レイテンシー | |||
| カラム追加 | ○(ダウンタイムがなく楽々) | 面倒 | |
| データ整合性 | 苦手 | 苦手 | ○ |
| 検索 | 苦手 | 苦手 | 得意 |
| ページング | 難しい | 得意 | |
| 集計 | 苦手 | 苦手(単純なカウントでも全件スキャン) | 得意 |
| 読み書き | 高速 | ||
| オートスケール | ○(再起動もいらない) | ||
| フルマネージド | ○ | ○ | ○ |
| レプリケーション | 自動なのでスケーラブル | ||
| シャーディング | 自動なのでスケーラブル | ||
| 台数 | 3台〜20台 | 3台〜20台 | 2台(正副構成) |
| 用途 | ・キャッシュ(ランキング、レコメンデーション) ・セッションストア |
・IoT ・ゲーム |
ElasticCache
RedisやMemcache互換のインメモリデータベースです。データをノードのメモリに保存するので非常に高速でデータの出し入れが可能です。
特徴
ノードやクラスターの管理をユーザ側でしなければならない。
DynamoDBとの違い
- ノードやクラスターの管理をユーザ側でしなくて良い。
- 構成もユーザが選べるので通信元(クライアント)とノードを同一AZに寄せればより通信を早くするということも可能
- 可用性担保のために書き込まれたデータを複数のAZに保存したり、接続にはSSLを用いるのでElastiCacheに比べるとやや書き込みが遅くなる。
- セッション情報のような頻繁に書き/読み込みされるようなデータを扱う場合はDynamoDBでは割高になる。
エンジン
「Redis」か「Memcached」のどちらかを選ぶことが可能です。
Redis
ElastiCacheの様々な機能を使いたい場合はこちらを選ぶ。Redisはシングルスレッドなので、コア数の少ないものを選ぶとよいが、メモリ量も少なくなるのでバランスをとって、「cache.m3.large」などを選ぶと良い。
Memcached
単一ノードの性能を上げたい場合はこちらを選ぶ。
よくあるシステム構成図
DynamoDBやAuroraに行く前にElasticCacheを間に入れる構成です。

DynamoDBやAuroraのキャパシティを減少させてデータベースの総コストを削減することが可能です。
機能が乏しい。
KVSやドキュメントDBはスケールアウト能力を高めるために機能を削っています。
- 集計クエリをサポートしていない。
- 任意のキーでソートができない。
- データの一部を置き換えられない。
- インデックスを主キーにしかつけることができない。
- トリガ 、ストアド、シーケンスがない。
- 扱えるデータ型がバイナリデータ型しかない。
- トランザクション機能(データ整合性)がない。
高可用性
KVSとドキュメントDBはレプリケーションを行うことにより簡単に高可用性(HA構成)を構築できます。
その他サービス
RedShif
ペタバイト規模に拡張できる高速なデータウェアハウス
ユースケース
全社横断的なデータ分析基盤
ターンアラウンドタイム重視
クエリの応答速度を重視したデータベースです。
用途
オンラインでオペレーションする用途(要は一般的な業務システムでCRUD操作を繰り返すなどのユースケース)
具体的な製品
NoSQL、RDB(OLTP)、グラフDB
スループット重視
単位時間あたりのデータ処理量を重視したデータベースです。いかに大量のデータを短い時間で処理するかが重要。
用途
バッチ(一括処理)で分析(データの全量に対して集計や抽出をする)をする用途
具体的には、夜間バッチで売上データなどをロードしてきて、BIツールと接続して様々な方法で集計したり、レポート出力するなど。
具体的な製品
Hadoop、RDB(DWH)、AWSのRedShift、GCPのBig Query、AzureのSQL Data warehouse


この記事へのコメントはありません。