AWS CLF(Cloud Practitioner)対策
データベースの使い分け
データベースの使い分け
このレッスンを終えると、問題文に書かれた要件から、どのデータベースサービスを選ぶべきかを判断できるようになります。ここまでに出た RDS と DynamoDB に、Amazon ElastiCache と Amazon Redshift を足して整理します。
まず、自分でサーバーを建てるなら
自前のサーバーでは、たいてい MySQL が1台あるだけでした。売上の集計も、セッションの保存も、商品マスタも、全部そこに入れていました。規模が小さいうちはそれで回りますが、増えてくると次のような症状が出ます。
- 同じ商品情報を毎秒何千回も読んでいて、データベースの CPU が張り付く
- 月次の集計クエリが数十分かかり、その間は本番の処理まで遅くなる
- ログイン中のユーザー情報を保存するだけなのに、テーブルが肥大していく
これは「1つのデータベースに全部やらせている」ことが原因です。AWS では、用途ごとに合う道具を使うという考え方 (パーパスビルト) を取ります。上の3つの症状には、それぞれ別の答えがあります。
ElastiCache は「何度も同じものを読む」ための道具
ElastiCache はメモリ上にデータを持つマネージドなキャッシュサービスです。Redis と Memcached に対応しています。
- データをメモリに置くので、ディスクを読むデータベースより桁違いに速い
- 用途は、繰り返し読まれる同じ結果を手前で受けること。データベースの負荷が下がり、応答も速くなる
- セッション情報やランキングの保持にも使われる
- あくまでキャッシュなので、これを唯一の保存先にはしない。元のデータは RDS などに置きます
試験では「読み取りの遅延をミリ秒未満にしたい」「同じクエリが繰り返し実行されてデータベースが重い」という文が合図です。
Redshift は「大量のデータを分析する」ための道具
Redshift はマネージドなデータウェアハウスです。
- 何年分ものデータを集めて、集計や分析のクエリを流す用途に特化しています
- 列指向で保持するため、「全期間の売上合計を出す」ような集計が速い
- 一方で、1件のレコードを頻繁に書き換える用途には向きません
- BI ツールをつないでレポートを作る、という使われ方が典型です
試験では「データウェアハウス」「ビジネスインテリジェンス」「ペタバイト級の分析」「過去数年分のデータを集計」が合図です。分析と聞いたら Redshift、と押さえます。
4つを1枚で
| 要件の文にこう書いてある | 選ぶサービス |
|---|---|
| リレーショナル、SQL、既存の MySQL や PostgreSQL、トランザクション | Amazon RDS |
| MySQL や PostgreSQL 互換で、より高い性能と可用性 | Amazon Aurora |
| キーバリュー、NoSQL、一桁ミリ秒、規模が大きく伸びる、サーバーレス | Amazon DynamoDB |
| 繰り返し読まれる、キャッシュ、マイクロ秒からミリ秒未満、データベースの負荷を下げたい | Amazon ElastiCache |
| データウェアハウス、BI、大量データの集計と分析 | Amazon Redshift |
CLF ではもう少し名前が出ることがあります。深追いは不要ですが、次の対応だけ知っておくと落とし穴を避けられます。
- Amazon Neptune — グラフデータベース。「関係性をたどる」「ソーシャルグラフ」「推薦」
- Amazon DocumentDB — MongoDB 互換のドキュメントデータベース
- AWS Database Migration Service (DMS) — 既存のデータベースを AWS へ移行するサービス。データベースそのものではありません
判断の手順
問題文を次の順で読むと、迷いが減ります。
- 移行の話か、保存の話かを見る。「既存の DB を AWS へ移したい」なら DMS です
- 分析か、業務処理かを見る。分析なら Redshift
- キャッシュの話かを見る。「繰り返し読む」「負荷を下げる」ならば ElastiCache
- 残ったらデータの形を見る。SQL と結合が要るなら RDS や Aurora、キーで引くだけなら DynamoDB
試験ではこう出る
よくある言い換えと、そこで引っ掛かる誤答を並べます。
- 「読み取りが遅い」だけでは答えが決まりません。キャッシュで解決する話か、レプリカで解決する話かを読み分けます。「同じデータが何度も読まれる」なら ElastiCache、「参照クエリの量そのものが多い」なら RDS のリードレプリカです
- 「高可用性」と来たらマルチ AZ、「読み取り性能」と来たらリードレプリカ。前のレッスンの分岐がそのまま出ます
- 「レポート作成のために過去5年分を集計する」で RDS を選ぶのは誤りです。ここは Redshift です
- 「サーバーレスなデータベース」で RDS を選ぶのは誤りです。DynamoDB が該当します
- 「ElastiCache をメインの保存先にする」という選択肢は誤りです。キャッシュは消えうる前提の置き場です
まとめ
- AWS は1つのデータベースに全部やらせず、用途ごとに合う道具を選ぶ
- 業務処理でリレーショナルなら RDS や Aurora、キーで引くだけなら DynamoDB
- 繰り返しの読み取りを速くしたいなら ElastiCache、大量データの分析なら Redshift
- 移行そのものを問う文なら DMS。データベース本体と混ぜない
- 「遅い」の一語では決まらない。何が遅いのか、目的は可用性か性能かを読む
復習ミニクイズ
EC サイトが、商品ページの表示のたびに同じ商品マスタのレコードを RDS から読み出しており、データベースの負荷が高止まりしています。商品情報の更新頻度は低く、表示の応答をできる限り速くしたいです。最も適した対応はどれですか。