【もんごでぃーびー】

MongoDB とは?

最終更新:
💡 JSON感覚でデータを保存・検索できる柔軟なデータベース

ドキュメント指向のNoSQLデータベース。JSONに似たBSON形式のドキュメントをコレクションで管理する。異なるフィールドを持つデータを保存でき、検証ルールも設定できる。使い方に合わせたデータ設計が必要。

📌 このページのポイント
行と列、ドキュメントの表現を比べる RDBMS:表 MongoDB id name age 1 Aki 30 2 Ren 25 3 Kai 28 ドキュメント { "name": "Aki", "age": 30, "tags": ["dev"] } 行と列が基本 配列・入れ子も可能 柔軟なフィールドと、データ設計は両立する
左は表、右はJSONで表したドキュメントの例。MongoDB内ではBSONで保存し、検証ルールも設定できる。
ひよこ ひよこ
MongoDBは、JSONファイルを保存するの?
ペンギン先生 ペンギン先生
データベース内では、JSONに似たBSONというバイナリ形式で保存するよ。フィールドと値を持つドキュメントを、コレクションにまとめる。値には配列や別のドキュメントも入れられるんだ。
ひよこ ひよこ
ドキュメントごとに違う項目を持てる?
ペンギン先生 ペンギン先生
持てるよ。たとえば商品Aにはcolor、商品Bにはsizeがある、というデータを同じコレクションに保存できる。ただし、必要な項目や型を揃えたいときは、スキーマの検証ルールを設定することもできるんだ。
ひよこ ひよこ
柔軟なら、設計は後回しでいい?
ペンギン先生 ペンギン先生
設計は必要だよ。どのデータを一緒に読み書きするかを考え、同じドキュメントへ埋め込むか、別のドキュメントを参照するかを選ぶ。項目を変えられることと、どんな保存方法でも適切なことは違うんだ。
ひよこ ひよこ
RDBMSとは、どう比べればいい?
ペンギン先生 ペンギン先生
行と列を基本にする表と、配列や入れ子を含むドキュメントという、データの表現を比べると分かりやすいよ。ただし、RDBMSでもJSONを扱える製品はある。名前だけで決めず、必要な検索や更新、データの関係に合わせて選ぶんだ。
ひよこ ひよこ
MongoDBでは更新をまとめて取り消せない?
ペンギン先生 ペンギン先生
単一ドキュメントの更新には原子性があるよ。複数ドキュメントをまたぐトランザクションも、レプリカセットやシャーディングの構成で使える。保証には読み書きの設定も関係し、処理コストもあるので、データ設計と合わせて考えるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「MongoDB」って出てきたら「JSONに似たドキュメントを保存・検索するデータベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「MongoDB」 = humongous(巨大な)に由来するデータベース名
💬 MongoDBの公式紹介では、名前はhumongousに由来すると説明しているよ。DBはデータベースを表すんだ。

参考資料

← 用語集にもどる