クイズの説明
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「非正規化」を復習