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


- ア:階層型データベースを使用し,項目名を上位階層とし,値を下位階層とした2階層でデータを格納する。
- イ:グラフ型データベースを使用し,商品データの項目名の集合から成るノードと値の集合から成るノードを作り,二つのノードを関係づけたグラフとしてデータを格納する。
- ウ:ドキュメント型データベースを使用し,項目構成の違いを区別せず,商品データ単位にデータを格納する。
- エ:リレーショナルデータベースを使用し,商品データの各項目名を個別の列名とした表を定義してデータを格納する。
TSUNAGARU-ADVICE
まず押さえたいこと
図のように、取得元ごとに項目名や項目数が異なるJSONデータをそのまま蓄積したい場合は、ドキュメント型データベースが適しています。商品ごとに一つのドキュメントとして格納できるため、項目構成が異なるデータを柔軟に扱える点が特徴です。
迷ったときの判断軸
リレーショナルデータベースでは、あらかじめ列名を定義する必要があるため、項目数や内容が予測できない場合には扱いにくくなります。階層型やグラフ型も用途が異なります。JSON形式の商品データを、構造の違いを許容して商品単位で格納するなら、ドキュメント型データベースと判断しましょう。
科目Bにつなげるために
科目Bでは、データ形式や検索要件に応じて、どのデータベースを選ぶべきかを問われることがあります。項目が固定され、表形式で厳密に管理したいならリレーショナルデータベース、項目が可変でJSONのようなデータを扱うなら、スキーマの柔軟性を重視してドキュメント型を選ぶ視点を持ちましょう。※DB関連試験向け
図のようなJSON形式の商品データは、Webサービスごとに項目名や項目数が異なります。さらに、取得元のWebサービスが随時変更され、将来どのような項目が追加されるか予測できません。
このような場合は、あらかじめ列構造を固定するリレーショナルデータベースよりも、商品データ単位で柔軟に格納できるドキュメント型データベースが適しています。ドキュメント型データベースでは、項目構成が異なるデータでも、JSONに近い形でそのまま扱いやすい点が特徴です。
したがって、ウが適切です。
❌他選択肢が誤りの理由ア:階層型データベースを使用し,項目名を上位階層とし,値を下位階層とした2階層でデータを格納する。
⇒階層型データベースは、親子関係をもつ階層構造のデータ管理に向いています。しかし、本問ではWebサービスごとに項目構成が異なり、検索キーにもあらかじめ制限を設けないため、単純な2階層構造で格納する方法は柔軟性に欠けます。
イ:グラフ型データベースを使用し,商品データの項目名の集合から成るノードと値の集合から成るノードを作り,二つのノードを関係づけたグラフとしてデータを格納する。
⇒グラフ型データベースは、データ同士の関係性をノードとエッジで表すのに向いています。しかし、本問の主な課題は、項目数や内容が予測できないJSON形式の商品データを柔軟に蓄積することです。商品データ単位で格納できるドキュメント型の方が適切です。
エ:リレーショナルデータベースを使用し,商品データの各項目名を個別の列名とした表を定義してデータを格納する。
⇒リレーショナルデータベースでは、通常、表の列構造をあらかじめ定義します。本問では取得元のWebサービスが変わり、項目数や内容を予測できないため、項目名を個別の列名として固定的に定義する方法は変更に弱く、不適切です。