AWS Services
DynamoDBとRDSの違い
Amazon DynamoDBとAmazon RDSの違いを、データ構造、料金、運用、使い分け、AWS資格試験で問われる観点から初心者向けに解説します。
結論
DynamoDBは、サーバーレスのNoSQLデータベースです。
RDSは、MySQLやPostgreSQLなどを使えるリレーショナルデータベースのマネージドサービスです。
ざっくり言うと、以下の使い分けです。
| サービス | 向いている用途 |
|---|---|
| DynamoDB | キーで高速に読み書きするシンプルなデータ |
| RDS | テーブル同士の関係やSQLが必要なデータ |
このサイトの問い合わせ保存では、DynamoDBを使う想定です。
理由は、保存するデータがシンプルで、複雑なリレーションが不要だからです。
DynamoDBとは
DynamoDBは、AWSのマネージドNoSQLデータベースです。
テーブルを作り、Partition Keyを中心にデータを保存します。
サーバーを自分で管理する必要はありません。
アクセス数に応じてスケールしやすく、Lambdaとの相性もよいです。
RDSとは
RDSは、リレーショナルデータベースをAWSで管理しやすくするサービスです。
代表的なエンジンには、MySQL、PostgreSQL、MariaDB、Oracle、SQL Serverなどがあります。
SQLを使って、テーブル同士をJOINしたり、トランザクションを扱ったりできます。
基本的な違い
| 項目 | DynamoDB | RDS |
|---|---|---|
| 種類 | NoSQL | リレーショナルDB |
| データ構造 | Key-Value、Document | テーブル、行、列 |
| クエリ | 主にキー設計ベース | SQL |
| サーバー管理 | サーバーレス | インスタンス管理が必要 |
| スケール | 水平方向に拡張しやすい | インスタンスやリードレプリカで拡張 |
| リレーション | 苦手 | 得意 |
| JOIN | 基本的に使わない | 使える |
| MVPコスト | 小規模なら抑えやすい | 固定費になりやすい |
| Lambda連携 | 相性がよい | VPCや接続管理が必要になる場合がある |
どちらを使うべきか
DynamoDBが向いているケース
DynamoDBは、以下のようなケースに向いています。
- 問い合わせフォームの保存
- ユーザー設定の保存
- 回答履歴の保存
- セッション情報の保存
- Keyで取得できるデータ
- アクセスパターンが明確なデータ
- サーバーレス構成にしたい場合
このサイトでは、問い合わせデータを保存するだけなのでDynamoDBで十分です。
RDSが向いているケース
RDSは、以下のようなケースに向いています。
- 複数テーブルをJOINしたい
- SQLで柔軟に検索したい
- トランザクションが重要
- 会計や注文管理のように整合性が重要
- 既存のMySQLやPostgreSQLの知識を使いたい
- 管理画面で複雑な検索をしたい
たとえば、ECサイトの注文、在庫、決済、顧客を細かく結びつけるならRDSが候補になります。
このサイトでDynamoDBを選ぶ理由
このサイトのMVPで保存する動的データは、問い合わせ内容だけです。
保存する項目は以下です。
| 項目 | 内容 |
|---|---|
| contactId | 問い合わせID |
| createdAt | 作成日時 |
| name | 名前 |
| メールアドレス | |
| subject | 件名 |
| message | 本文 |
| status | 対応状態 |
| sourcePage | 送信元ページ |
このデータは、複雑なJOINを必要としません。
まずは「保存できること」が重要です。
そのため、LambdaからDynamoDBへPutItemする構成で始めます。
RDSをMVPで使わない理由
RDSは強力ですが、個人開発MVPでは重くなりがちです。
理由は以下です。
| 理由 | 内容 |
|---|---|
| 固定費 | インスタンス稼働時間に応じて費用が出やすい |
| 運用 | バックアップ、接続、スケールを考える必要がある |
| 構成 | VPC、セキュリティグループ、接続管理が必要 |
| 過剰 | 問い合わせ保存だけなら機能が多すぎる |
RDSが悪いわけではありません。
今回のMVPには過剰という判断です。
試験で問われるポイント
Cloud Practitionerでは、DynamoDBはNoSQL、RDSはリレーショナルデータベースとして問われます。
SAAでは、可用性、スケール、読み取り性能、Multi-AZ、Read Replica、キー設計などが関係します。
| 観点 | DynamoDB | RDS |
|---|---|---|
| 可用性 | マネージドで高可用性を持つ | Multi-AZ構成を検討 |
| スケール | 水平方向にスケールしやすい | インスタンスサイズやリードレプリカ |
| 設計 | アクセスパターンからキー設計 | 正規化やSQL設計 |
| コスト | リクエストと保存容量が中心 | インスタンス稼働費用が中心 |
| 用途 | シンプルで大量の読み書き | 複雑な関係データ |
よくある間違い
NoSQLなら何でも速いと思う
DynamoDBは強力ですが、キー設計を間違えると使いづらくなります。
「どう取得するか」を先に考えてテーブルを作る必要があります。
RDSは古いと思う
RDSは今でも重要です。
SQL、JOIN、トランザクションが必要なシステムでは有力な選択肢です。
とりあえずRDSにする
学習初期の個人開発では、RDSが過剰になることがあります。
問い合わせ保存、学習履歴、簡単な設定保存ならDynamoDBで始める判断もあります。
まとめ
DynamoDBとRDSは、どちらが上という話ではありません。
用途が違います。
DynamoDBは、サーバーレス構成でシンプルなデータを高速に扱いたい場合に向いています。
RDSは、SQLやリレーションが必要な業務データに向いています。
このサイトのMVPでは、問い合わせ保存だけが動的データなのでDynamoDBを採用します。
この判断を説明できること自体が、AWSポートフォリオとして大きな学習成果になります。
次に学ぶ内容
ブログ記事だけでなく、AWS用語集・サービス比較・模擬問題・構成図を組み合わせると、 資格知識と実装イメージをつなげて理解できます。