MODULE 07 / DATABASES
データの関係と、 読み書きの設計
注文・利用者・商品をどう保存し、どう取り出すか。データモデル、運用の分担、キャッシュ、バックアップを分けて理解します。
このModuleで学ぶこと
01リレーショナルとキー・バリューの違いを説明する
02RDS・Aurora・DynamoDBの役割を整理する
03アプリからの接続とクエリの流れを理解する
04キャッシュとバックアップを原本の保存と区別する
IDで関係を作り、 必要な情報を取り出す
リレーショナルデータベースは、行と列からなるテーブルでデータを管理します。主キーで行を識別し、外部キーで別テーブルの行を参照します。注文に利用者の名前を毎回コピーせず、IDで関連付けられます。
Users|利用者
- UserID = U001(主キー)
- Name = Sato
Products|商品
- ProductID = P01(主キー)
- Name = Book
Orders|注文
- OrderID = O101(主キー)
- UserID = U001(外部キー)
- ProductID = P01(外部キー)
- Quantity = 2
SQLでは、条件で絞り、テーブルを結合し、集計できます。例の注文を利用者名・商品名と合わせて取り出すなら、OrdersのUserID・ProductIDを使ってUsers・ProductsとJOINします。正しく関連付けたモデルが、取り出したい情報を支えます。
基盤の運用を、 どこまで任せるか
| 方式 | AWSが管理する範囲 | 利用者が考えること |
|---|---|---|
| EC2上でDBを自分で運用 | 物理・仮想化基盤 | OS・DBの更新、バックアップ、可用性、データ設計 |
| Amazon RDS | 基盤・DB運用の多くを自動化 | エンジン選択、権限、データ、性能、バックアップ等の設定 |
| Amazon Aurora | RDSで利用するMySQL / PostgreSQL互換基盤 | 互換性、クラスター構成、権限、データ・性能の設計 |
Amazon RDSは、複数のリレーショナルDBエンジンを選べるマネージドサービスです。AuroraはMySQL/PostgreSQL互換で、計算とストレージを分離したAWSのDB基盤です。標準的なAuroraクラスターでは、複数AZにデータを保ち、読み取りレプリカを配置できます。
可用性と読み取り能力
Multi-AZは障害への備え、読み取りレプリカは読み取りの分散などに使います。方式ごとの動作を確認し、目的に応じて構成を選びます。
移行と設定
AWS DMSでDB間のデータ移行を支援できます。エンジン間のスキーマ・機能差、接続、移行中の変更、切り替えは別途確認します。
RDSやAuroraでも、データへの権限やバックアップの保持期間を利用者が設定します。マネージドであることは、アプリケーション設計や復旧確認が不要になるという意味ではありません。
公式資料:Amazon RDS ↗公式資料:Auroraの基本 ↗公式資料:Aurora DSQL ↗アクセス方法から、 キーを設計する
Amazon DynamoDBは、キー・バリューとドキュメントを扱うマネージドNoSQLデータベースです。テーブルの中に項目(Item)を保存し、属性(Attribute)を持たせます。主キーに必要な属性以外は、項目ごとに異なる属性を持てます。
- 主キー
- OrderNumber = O101
- 属性
- ItemName = Book、Quantity = 2
- 別の項目
- OrderNumber = O102。必要ならGift属性も持つ
| 操作 | 特徴 | 設計で考えること |
|---|---|---|
| GetItem | 主キーを指定して1項目を取得 | 直接取り出すキーを決める |
| Query | パーティションキーの等価条件などで取得 | アクセスパターンと索引を先に考える |
| Scan | テーブルや索引を広く読み、条件で絞る | 大規模な走査は読み取り負荷・費用を考える |
コンソール・CLI・SDKなどからAPIを使って操作できます。SQL互換のPartiQLも利用できますが、リレーショナルDBと同じ機能がすべて使えるわけではありません。
公式資料:Queryの条件 ↗公式資料:DynamoDBのPartiQL ↗接続の許可と、 データの操作を分ける
-
配置と通信を用意する
DBサブネットやSGを設定します。MySQLの標準ポートは3306。アプリのSGから必要なDBポートへの接続だけを許可する、などの範囲を決めます。
-
接続と認証を設定する
RDSのエンドポイント、ポート、DB名、認証情報をアプリに渡します。ネットワークの許可と、DBのユーザー権限は別です。認証情報はソースコードへ直接埋め込まないようにします。
-
テーブルと操作を用意する
リレーショナルDBでは主キー・外部キー・型を定義し、SQLを実行します。DynamoDBではテーブルのキーを定義し、項目を保存して取得します。操作方法の違いを確認します。
よく読むデータを、 一時保存して速くする
Amazon ElastiCacheは、Valkey・Redis OSS・Memcachedなどのインメモリ基盤を提供します。データをメモリから素早く読み、DBの繰り返し読み取りを減らす用途などに使います。
DynamoDB Accelerator(DAX)は、DynamoDBの読み取りを高速化するためのキャッシュです。ElastiCacheの汎用的な利用とは対象が異なります。キャッシュできる読み取りや整合性の条件も確認します。
公式資料:ElastiCache ↗公式資料:DynamoDB Accelerator ↗データの特性と、 復旧の目的から選ぶ
| サービス | 扱うもの・役割 | 利用例 |
|---|---|---|
| Amazon DocumentDB | MongoDB互換のドキュメントDB | JSON形式に近いデータを扱うアプリ |
| Amazon Neptune | 関係をグラフとして扱うDB | つながりの探索・不正の関係分析 |
| Amazon Managed Blockchain | ブロックチェーンの利用基盤 | 共有台帳やブロックチェーンへのアクセス |
| AWS Backup | 対応リソースのバックアップを集中管理 | 保存ポリシー・保持期間・復元の管理 |
専用DBは、名前の暗記より「何を検索・更新するか」を先に考えます。DocumentDBはMongoDB互換ですが、使用するバージョンや機能の互換性を確認します。DynamoDBもドキュメント型の属性を扱うため、保存形式だけでサービスが1つに決まるわけではありません。
AWS Backupでは、対応するAWSリソースや一部のオンプレミス環境の保存をまとめて管理できます。対象・スケジュール・保持期間・保存先を設定します。対象外のリソースまで自動保護されるとは考えません。
公式資料:DocumentDBの互換性 ↗公式資料:AWS Backup ↗重要ポイントと、 理解の確認
- リレーショナルDBは、テーブルとキーで関係を管理しSQLで検索する。
- RDS・Auroraは運用をAWSに任せる範囲を増やす。データ・権限・設定の責任は残る。
- DynamoDBはキーとアクセスパターンから設計する。ScanとQueryは異なる。
- キャッシュは高速化、バックアップは復旧。原本・複製・保存時点を分けて考える。
Q1. 注文と利用者を別のテーブルに分け、つなぐには?
利用者の主キーを注文から外部キーで参照し、SQLのJOINなどで必要な情報を取得します。
Q2. DynamoDBのQueryとScanは同じ?
異なります。Queryはパーティションキーの条件などを使い、Scanは広く読み取ります。
Q3. ElastiCacheを作れば、アプリのDB読取りは自動で減る?
このキャッシュアサイド方式では、アプリ側に読み取り・保存・期限や更新への対応が必要です。
Q4. データを複製していれば、過去の誤更新も戻せる?
複製にも誤更新が伝わる場合があります。過去の時点から復元するバックアップを別に設計します。
確認に使った、 公式資料
元データ:scripts/module7.txt。提供されたトランスクリプトを意味のまとまりで再構成し、誤解しやすい箇所を以下のAWS公式資料で確認しました(2026年10月6日)。実際の操作・仕様・料金は最新版を確認してください。