QUIZ 15分

クイズの説明

Step 1「データモデリングの原則」で学んだ内容の理解度を確認します。全8問、80%(7問)以上正解で合格です。


問題

Q1. 第2正規形(2NF)が解決する問題はどれですか?

  • A) 繰り返しグループの存在
  • B) 複合主キーの一部にのみ依存するカラム(部分関数従属)
  • C) 非キー属性間の推移的依存
  • D) マルチバリュー属性の存在
答えを見る

正解: B

2NFは複合主キーの一部にのみ依存するカラム(部分関数従属)を排除します。例えば、(order_id, product_id) の複合主キーに対して supplier_name が product_id のみに依存している場合、これを別テーブルに分離します。繰り返しグループは1NFで、推移的依存は3NFで解決します。


Q2. DynamoDBのシングルテーブル設計で最も重要な設計原則はどれですか?

  • A) テーブル数を最小化すること
  • B) アクセスパターンを先に定義し、それに基づいてキー設計すること
  • C) 全データを1つのパーティションに集約すること
  • D) RDBと同じ正規化ルールを適用すること
答えを見る

正解: B

DynamoDBはスキーマレスですが、パーティションキーとソートキーの設計がクエリ性能を決定します。RDBのような柔軟なJOINができないため、「どのようなクエリを実行するか」を先に定義し、それを効率的に実行できるキー設計を行うことが最重要です。テーブル数の最小化は結果であり目的ではありません。


Q3. イベントソーシングにおけるスナップショットの主な目的はどれですか?

  • A) イベントのバックアップを取る
  • B) イベント数が増加しても集約の復元(リハイドレーション)を高速に行う
  • C) 古いイベントを削除する
  • D) 読み取りモデルを構築する
答えを見る

正解: B

スナップショットはN件ごとに集約の現在状態を保存する仕組みです。リハイドレーション時にスナップショットから復元し、その後のイベントのみを再生することで、全イベントを最初から再生する必要がなくなります。イベント自体は削除せず、読み取りモデルの構築はProjectionが担います。


Q4. CQRSパターンで「結果整合性」が発生する理由はどれですか?

  • A) データベースの性能が低いため
  • B) 書き込みモデルと読み取りモデルが非同期で同期されるため
  • C) ネットワーク障害が頻繁に発生するため
  • D) トランザクション分離レベルが低いため
答えを見る

正解: B

CQRSではコマンド(書き込み)の結果がイベントとして発行され、Projectionが非同期で読み取りモデルを更新します。この非同期処理の間、書き込んだデータが読み取りモデルに反映されない期間が発生します。これが結果整合性です。Read-your-writes consistency パターンで緩和できます。


Q5. データメッシュの「データプロダクト」に必須の要素として正しいものはどれですか?

  • A) 機械学習モデル
  • B) 出力ポート、SLO、スキーマ定義、アクセス制御
  • C) リアルタイムダッシュボード
  • D) データサイエンティストの専任チーム
答えを見る

正解: B

データプロダクトは他チームが消費可能な形でデータを提供するものであり、出力ポート(API/ストリーム/データセット)、SLO(鮮度・完全性・可用性)、スキーマ定義(契約)、アクセス制御が必須です。機械学習やダッシュボードは消費側の活用方法であり、データプロダクトの構成要素ではありません。


Q6. ドキュメントDBで「参照」ではなく「埋め込み」を選ぶべき状況はどれですか?

  • A) 子データが独立して頻繁に更新される場合
  • B) 子データのカーディナリティが「1
    」で常に親と一緒に取得される場合
  • C) 子データが無限に増え続ける場合
  • D) 子データが複数の親から参照される場合
答えを見る

正解: B

埋め込みは「1

」または「1
」のカーディナリティで、親と子が常に一緒に取得される場合に最適です。1回のクエリで全データを取得でき、JOINが不要になります。独立した頻繁な更新、無限の増加、複数の親からの参照がある場合は参照パターンが適しています。


Q7. 非正規化を導入する際に最も重要な対策はどれですか?

  • A) ストレージ容量を増やす
  • B) 更新戦略(トリガー/アプリ層/バッチ)を明確にし、不整合の監視を設定する
  • C) インデックスを全カラムに追加する
  • D) レプリケーションを設定する
答えを見る

正解: B

非正規化はデータの冗長性を意図的に導入するため、冗長データの更新戦略を明確にする必要があります。トリガー、アプリケーション層での二重書き込み、バッチ処理のいずれかで同期し、正規化データとの不整合を検知する監視を設定することが必須です。


Q8. データメッシュの連合型ガバナンスで「グローバルに標準化」すべき項目はどれですか?

  • A) ドメイン固有のビジネスルール
  • B) 各チームの開発プロセス
  • C) PII分類基準、最低SLO要件、命名規約
  • D) 使用するプログラミング言語
答えを見る

正解: C

連合型ガバナンスでは、相互運用性と最低品質を保証するためにPII分類基準、最低SLO要件、命名規約(snake_case等)をグローバルに標準化します。一方、ドメイン固有のビジネスルールや開発プロセス、技術選定はローカルの自律に委ねます。


結果

7問以上正解の場合

合格です。 データモデリングの原則をしっかり理解しています。

「データモデリングの基礎は固まったな。次はデータパイプラインの設計に進もう。データの流れを制御する力を身につけよう」 — 佐藤CTO

6問以下の場合

もう少し復習しましょう。

  • Q1-Q2を間違えた場合 → Step 1-1「正規化」と Step 1-2「NoSQLモデリング」を復習
  • Q3-Q4を間違えた場合 → Step 1-3「イベントソーシングとCQRS」を復習
  • Q5-Q8を間違えた場合 → Step 1-4「データメッシュ」と Step 1-1「非正規化」を復習