JSON形式で表現される図1,図2のような商品データを複数のWebサービスから取得し,商品データベースとして蓄積する際のデータの格納方法に関する記述のうち,適切なものはどれか。
ここで,商品データの取得元となるWebサービスは随時変更され,項目数や内容は予測できない。
したがって,商品データベースの検索時に使用するキーにはあらかじめ制限を設けない。
正答3
解説
正解は3です。
図1のA社の商品データには「品名」「価格」「関連商品id」の配列があり、図2のB社のデータには「商品名」「生産地」「価格」「画像URL」があります。
取得元ごとに項目名も項目数も異なり、今後も予測できないため、事前に構造を決めずに格納できる方式が求められます。
【選択肢別解説】
1:× 項目名を上位、値を下位とする2階層で格納すると、どの値がどの商品のデータかというまとまりが失われます。
また、図1の関連商品idのような入れ子の構造も表しにくく、要件に合いません。
2:× グラフデータベースは、ノードとノードの関係(つながり)をたどる検索に向いています。
項目名の集合と値の集合を別々のノードにすると、商品ごとのデータのまとまりが崩れ、商品データの蓄積には適しません。
3:○ ドキュメントデータベースは、JSONのような文書を1件ずつそのまま格納でき、文書ごとに項目構成が異なってもかまいません。
事前に構造を定義しなくてよく、任意の項目をキーに検索できるので、要件に合います。
4:× 関係データベースでは、表の列をあらかじめ定義しておく必要があります。
項目が予測できないと、新しい項目が現れるたびに表の定義を変更しなければならず、要件に合いません。
【ポイント】
ドキュメントデータベースはNoSQLの一種で、スキーマ(データ構造の定義)を事前に決めなくてよい点が特徴です。
NoSQLにはほかに、キーバリュー型、列指向型、グラフ型があります。