戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報処理安全確保支援士 2019年 秋期 午前221


問題文

JSON 形式で表現される図 1,図2のような商品データを複数の Web サービスから取得し、商品データベースとして蓄積する際のデータの格納方法に関する記述のうち、適切なものはどれか。ここで、商品データの取得元となる Web サービスは随時変更され、項目数や内容は予測できない。したがって、商品データベースの検索時に使用するキーにはあらかじめ制限を設けない。
情報処理安全確保支援士 2019年 秋期 午前2 問21の問題画像

選択肢

階層型データベースを使用し、項目名を上位階層とし、値を下位階層とした2階層でデータを格納する。
グラフ型データベースを使用し、商品データの項目名の集合から成るノードと値の集合から成るノードを作り、二つのノードを関係づけたグラフとしてデータを格納する。
ドキュメント型データベースを使用し、項目構成の違いを区別せず、商品データ単位にデータを格納する。(正解)
リレーショナルデータベースを使用し、商品データの各項目名を個別の列名とした表を定義してデータを格納する。

🔒 解説は解答すると表示されます

ドキュメント型DB【午前2解説】

正解の理由

複数の外部 Web サービスから取得する JSON データは、項目数や項目名が随時変化し、スキーマが予測できません。このような「レコードごとに構造が異なる」データをそのまま格納し、必要に応じてフィールド単位での検索・インデックス化や部分更新を行いたい場合、ドキュメント型データベースが適しています。ドキュメント型DBは各商品を JSON ドキュメント単位で保存し、スキーマを固定せずに格納できるため、自然に可変スキーマを扱えます。したがって、選択肢のうちが適切です。

解法ステップ

  1. 問題の要件を整理する
    • 取得元が随時変更され、項目数・内容が予測できない
    • 検索時のキーに制限を設けない(任意フィールドで検索する可能性がある)
  2. 各 DB 種別の特性を照合する
    • スキーマ固定・列定義が必須か、スキーマレスに対応するかを確認
    • フィールド差分を許容しても検索性能や拡張性が適切かを検討
  3. 最も要件に合致する方式を選ぶ
    • 可変スキーマかつドキュメント単位での保存と検索・インデックスが容易な方式を選ぶ
  4. 結論:ドキュメント型DB(

選択肢別の誤答解説

  • ア: 階層型データベースを使用し、項目名を上位階層とし、値を下位階層とした2階層でデータを格納する。
    誤り。階層型データベースはツリー構造(多層化可能)であり、2階層に限定されるわけではありません。ただし、今回の要件では項目が可変で自由なキー検索を許す必要があり、階層型は固定的な親子関係やツリー構造の利用に向く設計です。属性集合が大きく変動する JSON をそのまま柔軟に扱う点では不利で、検索時に任意フィールドを効率的に検索・索引化する運用が難しくなることがあります。
  • イ: グラフ型データベースを使用し、商品データの項目名の集合から成るノードと値の集合から成るノードを作り、二つのノードを関係づけたグラフとしてデータを格納する。
    誤り(不適切)。グラフDBはリレーションの複雑な結びつき(ネットワークやソーシャル連携、多段リレーションなど)を表現・探索するのに強みがありますが、各商品ごとに大量かつ多様な属性をそのまま保存して随時検索キーを変える用途にはオーバーヘッドが大きく、設計とクエリが複雑になります。関連商品などの関係性表現は得意でも、可変フィールドの格納・汎用検索という観点ではドキュメント型の方が実用的です。
  • ウ: ドキュメント型データベースを使用し、項目構成の違いを区別せず、商品データ単位にデータを格納する。
    適切。各商品を JSON ドキュメントとしてそのまま保存でき、スキーマのばらつきを許容します。必要に応じて任意のフィールドにインデックスを張ったり、全文検索や部分抽出を行えます。可変スキーマで検索キーを固定しない要件と親和性が高いです。
  • エ: リレーショナルデータベースを使用し、商品データの各項目名を個別の列名とした表を定義してデータを格納する。
    誤り。列を固定すると項目が増減するたびにスキーマ変更(列追加)が必要になり運用が困難です。EAV(属性-値)モデルなどで可変属性を表現する手はありますが、性能劣化やクエリ複雑化、集計や型管理の困難さといったデメリットが出やすく、要件には不向きです。

よくある誤解

  • 階層型DBは必ず「2階層」しか持てない:誤り。階層型DBはツリー構造で多層化できるが、今回の可変フィールドと任意キー検索という要件には合致しない点が問題となります。
  • 「ドキュメント型DBはスキーマレスだから何もしなくてよい」:誤り。スキーマレスでも運用上は索引設計、データ整合性、検索要件に合わせたフィールド設計やバリデーションが必要です。

補足コラム

ドキュメント型DBは「スキーマをアプリ側で管理する(schema-on-read)」設計に向いています。つまり格納時に厳格な列定義を要求せず、読み出し時に必要なフィールドを解釈・検証します。典型的な運用例としては:
  • 基本はドキュメント単位で保存し、検索で頻出するフィールドだけを個別にインデックス化する
  • 関連関係(例:関連商品)はドキュメント内の配列や参照で表現し、必要に応じて別コレクションでノーマライズする
  • スキーマ進化が必要な場合はマイグレーションスクリプトやアプリ側の互換処理で対応する
    柔軟性と検索性能の両立は、インデックス化戦略と運用ルールで決まります。

FAQ

Q. リレーショナルDBで JSON 型(例: JSONB)を使えば同じことはできませんか?
A. JSON 型を備えた RDBMS なら可変フィールドの格納は可能です。ただし大規模な可変属性の検索やインデックス運用、スキーマ変更の柔軟性という点ではドキュメントDBが設計・運用面で有利なことが多いです。要件と既存技術スタックを考慮して選択してください。
Q. 関連商品(ID配列)のような関係はどう扱うべきですか?
A. 小規模の参照ならドキュメント内の配列で持ち、頻繁に結合して参照整合性が必要なら参照先を別コレクション(または別テーブル)に分けて必要時にフェッチする運用が現実的です。
Q. 全てをドキュメント型DBで運用するリスクは?
A. 適切なインデックスを張らないと検索性能が低下する、データ整合性(型や必須項目)の管理が難しい、複雑な集計は RDBMS より不得手、などが挙げられます。用途に応じたハイブリッド運用も検討してください。

関連キーワード: JSON、ドキュメントDB、スキーマレス、NoSQL、階層型DB、グラフDB、リレーショナルDB、索引設計、EAV、JSON検索
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について