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
この記事へのコメントはありません。