MODULE 07 / DATABASES

データの関係と、 読み書きの設計

注文・利用者・商品をどう保存し、どう取り出すか。データモデル、運用の分担、キャッシュ、バックアップを分けて理解します。

7つの学習セクション図解+比較表+復習公式資料確認:2026.10.06

このModuleで学ぶこと

01リレーショナルとキー・バリューの違いを説明する

02RDS・Aurora・DynamoDBの役割を整理する

03アプリからの接続とクエリの流れを理解する

04キャッシュとバックアップを原本の保存と区別する

01

IDで関係を作り、 必要な情報を取り出す

リレーショナルデータベースは、行と列からなるテーブルでデータを管理します。主キーで行を識別し、外部キーで別テーブルの行を参照します。注文に利用者の名前を毎回コピーせず、IDで関連付けられます。

利用者・商品・注文を、 別テーブルで管理するRELATIONSHIP

Users|利用者

  • UserID = U001(主キー)
  • Name = Sato

Products|商品

  • ProductID = P01(主キー)
  • Name = Book

Orders|注文

  • OrderID = O101(主キー)
  • UserID = U001(外部キー)
  • ProductID = P01(外部キー)
  • Quantity = 2
IDで関連付けるOrders → Users / Products
主キーは行を識別する値。外部キーは別テーブルのキーを参照します。矢印表記は参照関係であり、通信の向きではありません。

SQLでは、条件で絞り、テーブルを結合し、集計できます。例の注文を利用者名・商品名と合わせて取り出すなら、OrdersのUserID・ProductIDを使ってUsers・ProductsとJOINします。正しく関連付けたモデルが、取り出したい情報を支えます。

02

基盤の運用を、 どこまで任せるか

リレーショナルDBの運用の分担
方式 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 ↗
03

アクセス方法から、 キーを設計する

Amazon DynamoDBは、キー・バリューとドキュメントを扱うマネージドNoSQLデータベースです。テーブルの中に項目(Item)を保存し、属性(Attribute)を持たせます。主キーに必要な属性以外は、項目ごとに異なる属性を持てます。

注文番号をキーに、 注文の項目を取得するITEM MODEL
テーブル:Orders
主キー
OrderNumber = O101
属性
ItemName = Book、Quantity = 2
別の項目
OrderNumber = O102。必要ならGift属性も持つ
主キーがパーティションキーのみの例です。パーティションキー+ソートキーの構成もあります。すべての項目には、定義された主キーが必要です。
検索方法を使い分ける
操作 特徴 設計で考えること
GetItem 主キーを指定して1項目を取得 直接取り出すキーを決める
Query パーティションキーの等価条件などで取得 アクセスパターンと索引を先に考える
Scan テーブルや索引を広く読み、条件で絞る 大規模な走査は読み取り負荷・費用を考える

コンソール・CLI・SDKなどからAPIを使って操作できます。SQL互換のPartiQLも利用できますが、リレーショナルDBと同じ機能がすべて使えるわけではありません。

公式資料:Queryの条件 ↗公式資料:DynamoDBのPartiQL ↗
04

接続の許可と、 データの操作を分ける

アプリケーションが、 DBへ接続するFLOW
利用者Web画面から要求
EC2のアプリDBへ接続してクエリ
RDS MySQLデータを保存・検索
利用者がDBへ直接ログインする構成ではありません。アプリがDBエンドポイントへ接続し、結果を利用者へ返します。
  1. 配置と通信を用意する

    DBサブネットやSGを設定します。MySQLの標準ポートは3306。アプリのSGから必要なDBポートへの接続だけを許可する、などの範囲を決めます。

  2. 接続と認証を設定する

    RDSのエンドポイント、ポート、DB名、認証情報をアプリに渡します。ネットワークの許可と、DBのユーザー権限は別です。認証情報はソースコードへ直接埋め込まないようにします。

  3. テーブルと操作を用意する

    リレーショナルDBでは主キー・外部キー・型を定義し、SQLを実行します。DynamoDBではテーブルのキーを定義し、項目を保存して取得します。操作方法の違いを確認します。

05

よく読むデータを、 一時保存して速くする

Amazon ElastiCacheは、Valkey・Redis OSS・Memcachedなどのインメモリ基盤を提供します。データをメモリから素早く読み、DBの繰り返し読み取りを減らす用途などに使います。

アプリが、 キャッシュとDBを使い分けるCACHE ASIDE
アプリケーションがキャッシュとDBを使い分けるキャッシュアサイド アプリは最初にElastiCacheを確認。ヒットなら返されたデータを利用し、ミスならRDSを読みます。得られた結果はアプリがキャッシュへ保存します。DBからキャッシュへ直接送る図ではありません。 アプリケーション EC2などで実行 取得・再保存を制御 Amazon ElastiCache よく読むデータを保持 Amazon RDS データの原本を保持 ① キャッシュを確認 ② ヒット/ミスを返す ③ ミスならDBを読む ④ 結果をアプリが取得
キャッシュアサイドの例。ヒットならキャッシュの結果で応答し、ミスならDBを読みます。得た結果はアプリがキャッシュへ保存し、その後の読み取りに使います。

DynamoDB Accelerator(DAX)は、DynamoDBの読み取りを高速化するためのキャッシュです。ElastiCacheの汎用的な利用とは対象が異なります。キャッシュできる読み取りや整合性の条件も確認します。

公式資料:ElastiCache ↗公式資料:DynamoDB Accelerator ↗
06

データの特性と、 復旧の目的から選ぶ

目的に応じたサービス
サービス 扱うもの・役割 利用例
Amazon DocumentDB MongoDB互換のドキュメントDB JSON形式に近いデータを扱うアプリ
Amazon Neptune 関係をグラフとして扱うDB つながりの探索・不正の関係分析
Amazon Managed Blockchain ブロックチェーンの利用基盤 共有台帳やブロックチェーンへのアクセス
AWS Backup 対応リソースのバックアップを集中管理 保存ポリシー・保持期間・復元の管理

専用DBは、名前の暗記より「何を検索・更新するか」を先に考えます。DocumentDBはMongoDB互換ですが、使用するバージョンや機能の互換性を確認します。DynamoDBもドキュメント型の属性を扱うため、保存形式だけでサービスが1つに決まるわけではありません。

AWS Backupでは、対応するAWSリソースや一部のオンプレミス環境の保存をまとめて管理できます。対象・スケジュール・保持期間・保存先を設定します。対象外のリソースまで自動保護されるとは考えません。

公式資料:DocumentDBの互換性 ↗公式資料:AWS Backup ↗
07

重要ポイントと、 理解の確認

  • リレーショナルDBは、テーブルとキーで関係を管理しSQLで検索する。
  • RDS・Auroraは運用をAWSに任せる範囲を増やす。データ・権限・設定の責任は残る。
  • DynamoDBはキーとアクセスパターンから設計する。ScanとQueryは異なる。
  • キャッシュは高速化、バックアップは復旧。原本・複製・保存時点を分けて考える。
Q1. 注文と利用者を別のテーブルに分け、つなぐには?

利用者の主キーを注文から外部キーで参照し、SQLのJOINなどで必要な情報を取得します。

Q2. DynamoDBのQueryとScanは同じ?

異なります。Queryはパーティションキーの条件などを使い、Scanは広く読み取ります。

Q3. ElastiCacheを作れば、アプリのDB読取りは自動で減る?

このキャッシュアサイド方式では、アプリ側に読み取り・保存・期限や更新への対応が必要です。

Q4. データを複製していれば、過去の誤更新も戻せる?

複製にも誤更新が伝わる場合があります。過去の時点から復元するバックアップを別に設計します。

08

確認に使った、 公式資料

元データ:scripts/module7.txt。提供されたトランスクリプトを意味のまとまりで再構成し、誤解しやすい箇所を以下のAWS公式資料で確認しました(2026年10月6日)。実際の操作・仕様・料金は最新版を確認してください。