Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20261113_JAWS_Osaka

 20261113_JAWS_Osaka

Takuya Yonezawa

November 13, 2026

Transcript

14 slides
  1. DynamoDBとは 1 めっちゃメンテナンスフリーな NoSQL AWSが提供するキーバリュー/ ドキュメント型のデータベース。 フルマネージド サーバー構築やパッチ適用、スケーリングはAWSにお任せ、 利用者はテーブルの設計に集中できる。 2

    サーバーレス インスタンスの管理が不要。使った分だけ支払うオンデマンド課金も選べる。 私はオンデマンド派 3 高速で高可用 規模によらず1桁ミリ秒の応答を目指す設計。 データは複数AZに自動で冗長化される。Global Tableも。 4 DB管理コストが低い DBのバージョンアップ計画? そんなものはここ数年書いた記憶がありません RDBのようにDB内ユーザー権限や認証情報も管理する必要なし。 © 2026 Japan Digital Design, Inc. 4
  2. RDBとの違い DynamoDBはJOINを前提とせず、アクセスパターンから逆算 観点 RDB DynamoDB 設計原則 データの正規化 アクセスパターン スキーマ テーブル作成時に固定

    主キー以外は自由 なし。 結合(JOIN) SQLで柔軟に実行できる スケール 主に垂直(性能の引き上げ) 水平に自動で分散 運用 インスタンスの管理が必要 サーバー管理は不要 非正規化で対応する © 2026 Japan Digital Design, Inc. 5
  3. キー設計の流れ アクセスパターン データをどの条件で 読み書きするかを整理 → キー設計 パーティションキー/ソートキー を決め均等に分散させる → インデックス追加

    主キーで足りない検索を GSIやLSIで補う RDBと逆で、クエリパターン決めてからテーブルを設計する パーティションキーのハッシュ値でデータの保存先が決まるため、キー選びが性能と分散を左右する。 このへんの話はAWS Dev Day 2023の動画を見るのがおすすめ。 [GT-2] イラストで学ぶAmazon DynamoDB ~テーブル設計からパフォーマンスチューニングまで~ © 2026 Japan Digital Design, Inc. 6
  4. 読み取りの基本操作 覚えておく操作は3つ GetItem 1件取得 主キーを完全に指定して、1件だけを最短で取得する。最も軽い操作。 キーを指定する操作が基本。 全件走査は最後の手段にする。 なんやかんやScanでも捌けてしまうため、 意図しないScan実行に気づかないことも。 思い切ってSCPでScan禁止にするのもアリ。

    これでデータ取れるのが一番良い。 Query 範囲取得 パーティションキーを指定し、ソートキーの条件で絞り込む。 関連データをまとめて読む用途に向く。 Scan 全件走査 テーブル全体を読み、後から条件で絞る。 データが増えるほど遅く高価になるため多用は避ける。 © 2026 Japan Digital Design, Inc. 7
  5. 口に出して言いたい Sparse Indexs パターン(訳: まばらなインデックス) 「インデックスに指定したキー属性を持たないアイテムはインデックスに反映されない」という特性を応用する。 インデックス自体のデータ量が減るため、読み込み/書き込みコストが下がる。 ベーステーブル(全タスク) Sparse Index

    userId(PK)と completedAt(SK) completedAt をソートキーに指定 プレゼン資料作成 プレゼン資料作成 completedAt あり → メール返信 completedAt なし AWS本を読む completedAt あり 「メール返信」は載らない AWS本を読む Case. 未完了のタスクのみを抽出したい © 2026 Japan Digital Design, Inc. 10
  6. DynamoDB Streams と TTL 変更を記録するStreams、不要データを消すTTL RDBだとCDCやレコード定期削除、組むのは面倒ですよね。 え? ストアドプロシージャでできる? ようこそ沼へ。 Streams

    TTL 項目の変更履歴を時系列で取得 期限切れ項目を自動で削除 INSERT / MODIFY / REMOVEを項目単位で記録 エポック秒の属性を指定し、期限後に自動削除 保持期間は24時間 書き込みキャパシティを消費せず無料 Lambda連携で変更をトリガーに処理 削除は期限後数日以内。それまでは読み取れる Case. レコード変更の監査ログ記録として利用 Case. データの無限増加によるパフォーマンス低下を防止 © 2026 Japan Digital Design, Inc. 11

More Decks by Takuya Yonezawa

Other Decks in Technology