スキーマレスなJSON商品データを格納するドキュメント指向DB

ドキュメント指向データベース(MongoDBなど)は、JSONやBSONのような柔軟な階層型データ構造(ドキュメント)をスキーマレスに格納・管理できるNoSQLデータベースです。取得元のWebサービスごとに項目数や属性名(スキーマ)が異なり、今後も予測できない場合でも、固定的なテーブル定義を行わずに商品データ単位でそのまま保存・インデックス付けして柔軟に検索できます。 階層型データベースは厳格な親子関係(ツリー構造)を前提としており、随時項目が変化するスキーマレスなデータの格納や柔軟な検索には適していません。 グラフデータベースはエンティティ間の複雑な関係性(ネットワーク構造やエッジの探索)を扱うことに特化しており、独立した商品ドキュメントの属性管理には不向きです。 関係データベース(RDB)は厳密なスキーマ定義(事前に列名や型を決めること)を前提とするため、項目が随時変更・追加されるデータの管理には適していません。

JSON形式で表現される図1,図2のような商品データを複数のWebサービスから取得し,商品データベースとして蓄積する際のデータの格納方法に関する記述のうち,適切なものはどれか。ここで,商品データの取得元となるWebサービスは随時変更され,項目数や内容は予測できない。したがって,商品データベースの検索時に使用するキーにはあらかじめ制限を設けない。

〔図1 A社Webサービスの商品データ〕

json
{
  "_id": "AA09",
  "品名": "47型テレビ",
  "価格": "オープンプライス",
  "関連商品id": [
    "AA101",
    "BC06"
  ]
}

〔図2 B社Webサービスの商品データ〕

json
{
  "_id": "AA10",
  "商品名": "りんご",
  "生産地": "青森",
  "価格": 100,
  "画像URL": "http://www.example.com/apple.jpg"
}
出典令和5年度 春期 応用情報技術者試験 午前 問26
ア
階層型データベースを使用し,項目名を上位階層とし,値を下位階層とした2階層でデータを格納する。
イ
グラフデータベースを使用し,商品データの項目名の集合から成るノードと値の集合から成るノードを作り,二つのノードを関係付けたグラフとしてデータを格納する。
ウ
ドキュメントデータベースを使用し,項目構成の違いを区別せず,商品データ単位にデータを格納する。
エ
関係データベースを使用し,商品データの各項目名を個別の列名とした表を定義してデータを格納する。