ある日の放課後、パソコン部の中学生ユウキは先生に質問しました。
ユウキ:「先生、ぼく『データベース』って言葉は聞いたことあるんですけど、最近『ドキュメント指向データベース』っていうのを見かけたんです。普通のデータベースと何が違うんですか?」
先生:「いい質問だね、ユウキ。じゃあ、学校の『生徒名簿』と『連絡帳』を例にして考えてみようか。」
先生:「リレーショナルデータベース(関係型データベース)は、表(テーブル)に情報を整理するタイプだ。たとえば、生徒の名前・学年・電話番号をそれぞれの列に入れて、行ごとに一人ずつ記録するイメージだね。」
ユウキ:「なるほど、表みたいに整っているんですね!」
先生:「一方でドキュメント指向データベースは、表ではなく“文書(ドキュメント)”として1人分の情報をまとめて保存するんだ。たとえば、名前、電話番号、好きな教科、部活、趣味…などをひとつのまとまりで、JSON形式みたいなかたちで保存する。」
ユウキ:「JSON形式って何でしたっけ?」
先生:「いい質問だね。JSON(ジェイソン)っていうのは、“JavaScript Object Notation”の略で、データをやり取りするための軽量なデータ形式なんだ。見た目は、こんなふうな感じだよ。」
{
"名前": "ユウキ",
"電話番号": "090-xxxx-xxxx",
"好きな教科": "数学",
"部活": "パソコン部",
"趣味": ["ゲーム", "プログラミング"]
} ユウキ:「おお、これは…カギかっこで名前と情報がセットになってる!しかも趣味は複数あるからリストになってるんですね。」
先生:「そうそう。この形式なら、データをひとつの“まとまり”として扱えるから、そのまま保存して、そのまま取り出せるんだ。これがドキュメント指向データベースと相性がいい理由だね。」
ユウキ:「たしかに、これなら一人ひとり情報が違ってもちゃんと整理できそう!」
先生:「その通り。リレーショナルデータベースでは、列を追加したり削除したりすると、全体に影響が出るから慎重に設計する必要があるけど、ドキュメント指向はレコードごとに異なる情報を持っていても大丈夫なんだ。たとえば、ECサイトのユーザー情報やショッピング履歴など、ユーザーごとに保存する項目が違っても問題なく扱える。これが現代のWebサービスでよく使われる理由だよ。」
| 種類 | データ構造 | 柔軟性 | 向いている用途 |
|---|---|---|---|
| リレーショナルDB | 表(テーブル) | 低い | 社内システム、帳票出力が必要な場面 |
| ドキュメント指向DB | 文書(JSONなど) | 高い | Webサービス、ユーザー情報管理 |
ある有名な通販サイトでは、ユーザーごとに住所、支払い方法、閲覧履歴、おすすめ商品リストなど保存したい情報がバラバラでした。そこでMongoDBを導入し、ドキュメント単位で個別に情報を管理することで、サービスのパーソナライズが簡単に行えるようになりました。
ある地方自治体では、市民一人ひとりの申請情報や支援履歴などをまとめて保存する必要がありました。申請の種類によって記録内容が異なるため、ドキュメント指向データベースを導入することで、柔軟に対応しやすくなりました。
A. 表形式でデータを管理する
B. データを1つの文書として保存できる
C. データ構造を事前に固定しなければならない
A. 数学の成績表のように項目が固定されたデータ
B. ユーザーごとに保存情報が異なるアプリの設定
C. 給与計算のように正確な構造が求められるシステム
A. MySQL
B. PostgreSQL
C. MongoDB