MongoDBって何?わかりやすく解説

データベースって聞いたことある?「会社のお客さんの情報を管理するシステム」みたいなやつだけど、実はいろんな種類があるんだ。その中で最近めっちゃ注目されているのが「MongoDB」っていうやつ。従来のデータベースと全然違う仕組みで、データの保存方法がとても自由なんだよ。この記事を読めば、MongoDBが何で世界中の会社で使われているのか、その秘密がわかるよ。

MongoDBって、よく聞くんですけど、普通のデータベースと何が違うんですか?

いい質問だね。普通のデータベースは、エクセルのように「決まった形の表」にデータを入れるんだ。つまり、名前の欄・住所の欄・電話番号の欄みたいに、あらかじめ決められた場所に情報を入れていく仕組み。でもMongoDBはその枠を気にしない。自由な形でデータを保存できるんだよ。
自由な形?どういうことですか?

例えば、Aさんの情報に「好きな色:青」って情報があるけど、Bさんには好きな色がない、みたいな場合があるよね。普通のデータベースだと「空白にする」みたいなことになるけど、MongoDBは「そもそもその情報を入れなくていい」ということができるんだ。データの形が柔軟だからね。
へ〜!それってどんなときに便利なんですか?

スマホアプリやWebサービスを開発しているとき、最初は「ユーザーの名前と年齢だけ保存しよう」って思ってても、途中から「プロフィール画像も保存しようか」とか「好きなゲームのジャンルも入れようか」みたいに、保存する情報がどんどん変わっていくことがあるんだ。MongoDBはそういう変化に強いから、修正が楽なんだよ。
📝 3行でまとめると
  1. MongoDBはデータの形が自由でスキーマがないため、従来のデータベースより柔軟に情報を保存できる
  2. データをJSON形式(つまり、Webで使う標準的なデータの形)で保存するから、Webアプリケーション開発と相性がいい
  3. 大量のデータをスケーラブルに扱える(つまり、データが増えても対応しやすい)から、成長中のサービスに最適
目次

もうちょっと詳しく

MongoDBを理解するには、まず「NoSQL」という概念を知ることが大事だよ。これはつまり「SQLというデータベース言語に頼らないデータベース」という意味。従来のデータベース(MySQLやPostgreSQLなど)は、「SELECT」とか「INSERT」みたいな決まった命令でデータを操作するんだけど、MongoDBは違う方法を使う。JSONというWebで標準的なデータ形式を直接保存・操作できるから、プログラマーにとってめっちゃ扱いやすいんだ。特にJavaScriptやPythonみたいなプログラミング言語を使う開発者からは「自分のコードとの相性が抜群!」って好かれている。

💡 ポイント
MongoDBはWebアプリケーション開発の「スピード」と「柔軟性」を両立させたデータベースなんだ。だからスタートアップやベンチャー企業でめっちゃ人気!

⚠️ よくある勘違い

❌ 「MongoDBなら何でも自由に保存できるから、どんなデータでも大丈夫」
→ いや、データベースとして重要な「データの一貫性」や「安全性」の仕組みはちゃんと備わってるんだ。自由な形でデータを保存できるというのは「スキーマに縛られない」という意味であって、「好き勝手にやってOK」という意味ではないんだよ。
⭕ 「MongoDBは形の定義は自由だけど、データの品質や安全な保存方法はちゃんと考えないといけない」
→ つまり、自由度が高いからこそ、開発者がもっと気をつけてデータを管理する責任が増えているということ。便利だけど、その分スキル が必要ってわけだ。
なるほど〜、あーそういうことか!

[toc]

MongoDBは「自由な形のデータベース」

従来のデータベースとの違い

データベースというのは、会社の顧客情報とか、ネットショップの商品情報とか、大量の情報を整理して保存するためのシステムなんだ。これまで主流だったのは「リレーショナルデータベース」という種類で、これはエクセルのように「行と列」で整理されていたんだよ。例えば、顧客管理なら「ID・名前・住所・電話番号」みたいな列があって、そこに顧客の情報を1行ずつ入れていく感じね。

このやり方は、サイズが決まっているデータ、つまり「どの顧客も必ず名前と住所がある」みたいな場合には最高に効率的なんだ。でもね、現代のWebアプリケーションは複雑になってきたんだよ。

例えば、ソーシャルメディアを想像してみてほしい。ユーザーの基本情報(名前・年齢)は誰もが持ってるけど、プロフィール写真を設定してる人もいれば、していない人もいる。自己紹介文を書いてる人もいれば、書いていない人もいる。さらに、ユーザーが「今チェックインしている場所」みたいな新しい情報を保存したくなったとき、従来のデータベースだと全ユーザーのテーブルを修正しなきゃいけなくなるんだ。これってめっちゃ大変だよね。

MongoDBは、こういう「柔軟なデータの保存」を最初から想定して設計されたんだ。つまり、各ユーザーが持ってるデータが違ってもいい、後から新しい情報を追加したくなったときに簡単に対応できる、そういう自由度を大事にしているわけだ。

JSONという形でデータを保存する

MongoDBがデータを保存するときに使うのが「JSON」という形式なんだ。JSONというのは、JavaScriptという言語で使われていたデータの書き方が、いまや世界中のWebアプリケーションで標準的に使われるようになったものだ。つまり、プログラマーが最も使いやすいデータの形ということだね。

JSONはこんな感じで書くんだ:

{
  "name": "太郎",
  "age": 20,
  "favorite_color": "青"
}

見たことあるでしょ?これが「キーと値のペア」という形で、データを整理しているんだ。「nameというキーに対して、値は太郎」という感じね。MongoDBはこのJSONをそのままデータベースに保存できるから、JavaScriptでプログラムを書いている開発者にとって、本当に使いやすいんだよ。データを取り出すときも、プログラムの中で直接JSONとして扱えるから、変換する手間がないんだ。

そして、MongoDBのすごいところは、JSONのデータを直接クエリ(つまり、「このデータを取り出してほしい」という命令)で検索・操作できるってことなんだ。従来のデータベースだと「SELECT」とか「WHERE」みたいなSQLという言語を覚える必要があるけど、MongoDBはその必要がないわけだ。

MongoDBがスキーマレスって何が便利なの?

スキーマレスとは「形の定義がない」という意味

ここで「スキーマ」という専門用語が出てくるけど、これはつまり「データの形を決めるルール」という意味なんだ。従来のデータベースでは、テーブルを作るときに「名前という列は文字列で、年齢という列は数字」みたいに、厳密に決めるんだよ。これがスキーマだ。

MongoDBは「スキーマレス」だから、こういうルールがない。つまり、同じコレクション(これはテーブルに相当する)の中に、形が違うドキュメント(これはレコード、つまり1つのデータに相当する)が混在できるわけだ。

実際の例で説明しよう。ECサイト(オンラインショップ)の商品情報を保存する場合を考えてほしい。洋服は「サイズ:S・M・L」という情報が必要だけど、本は「ページ数」という情報が必要だよね。従来のデータベースなら、「サイズ」と「ページ数」という両方の列を用意して、洋服ではページ数の欄を空白にする、という変なことになるんだ。

でもMongoDBなら、洋服のデータには「サイズ」を入れて、本のデータには「ページ数」を入れればいいだけなんだ。各商品が必要な情報だけを保存できるから、無駄がないし、データベースの管理も楽になるわけだ。

開発スピードが速くなる理由

スキーマレスだと、開発中に仕様が変わったときに本当に便利なんだよ。例えば、最初は「ユーザーの名前と年齢だけ保存しよう」って決めたのに、途中から「ユーザーの出身地も保存したい」ってなった場合、従来のデータベースだとスキーマを修正する作業が必要になるんだ。これ、本当に面倒くさいんだ。

でもMongoDBなら、新しいデータから出身地を追加するだけでいいんだ。古いデータには出身地がないドキュメントが残ることになるけど、それでいいわけだ。だから、Webアプリケーションの開発って、仕様変更がめっちゃ多いんだけど、MongoDBを使うとその対応が簡単になるんだよ。

MongoDBのデータベースの構造を理解しよう

MongoDBの階層構造

MongoDBのデータは、以下のような階層構造になってるんだ:

MongoDBサーバーデータベースコレクションドキュメント

これを身近な例に置き換えると、図書館だと思ってほしい。MongoDBサーバーは図書館そのもの、データベースは図書館の中の「文学」「歴史」「技術書」みたいな分野、コレクションはその分野の中の「日本文学」「海外文学」みたいな細かいカテゴリ、ドキュメントは個別の「本」という感じだ。

つまり、MongoDBサーバーの中に複数のデータベースを作ることができて、各データベースの中に複数のコレクションがあって、各コレクションの中に複数のドキュメント(JSONデータ)が入ってるわけだ。

ドキュメントの構造

MongoDBの1つのドキュメントは、こんな感じのJSONなんだ:

{
  "_id": ObjectId("507f1f77bcf86cd799439011"),
  "name": "太郎",
  "age": 25,
  "email": "taro@example.com",
  "address": {
    "prefecture": "東京都",
    "city": "渋谷区"
  },
  "hobbies": ["プログラミング", "ゲーム", "読書"]
}

見てわかるように、データの中に他のデータが入っていたり(「address」の中に「prefecture」と「city」が入ってる)、複数の値が入ったり(「hobbies」は配列で複数の値を持ってる)できるんだ。これが「ドキュメント」の構造だ。

「_id」というのは、このドキュメントを識別するためのユニークな番号なんだ。つまり、この太郎さんのデータをどうやって見つけ出すかというときに、この_idを使って検索するわけだね。

MongoDBはなぜスケーラブルなのか

大量のデータに対応できる

MongoDBが「スケーラブル」つまり「データが増えても対応しやすい」と言われているのは、データを複数のサーバーに分散させて保存できるからなんだ。これを「シャーディング」と呼ぶんだけど、つまり「データを複数の場所に分ける」という意味だ。

例えば、YouTubeみたいなめっちゃ大量のユーザーがいるサービスを想像してほしい。全ユーザーのデータを1つのサーバーに入れようとしたら、そのサーバーが爆発しちゃう。だから、ユーザーAのデータはサーバー1に、ユーザーBのデータはサーバー2に、みたいに分けて保存するわけだ。MongoDBはこの「分散保存」を最初から想定して設計されてるんだよ。

さらに、MongoDBは「レプリケーション」っていう仕組みもあるんだ。これはつまり「同じデータを複数の場所に保存しておく」ということなんだ。例えば、サーバー1が壊れちゃった場合でも、サーバー2と3に同じデータがあれば、サービスが止まらないわけだ。これが「高可用性」と呼ばれる特性で、重要なサービスを運営する企業にとっては本当に大事な機能なんだよ。

成長中のサービスに最適

スタートアップや成長中のWebサービスって、最初は小さく始まるけど、ユーザーが増えると一気にデータが増えるんだ。そういうときに、MongoDBは本当に活躍するんだよ。なぜなら、「最初は1台のサーバーで始まって、ユーザーが増えたら複数のサーバーに分散させる」みたいな成長が簡単にできるからなんだ。従来のデータベースだと、こういう成長対応が本当に大変なんだ。

だから、月日が経つにつれてユーザーが爆発的に増えるようなサービスには、MongoDBが選ばれることが多いんだ。最初から大規模なシステムを構築する必要がなくて、必要に応じて規模を大きくしていけるからね。

“`html

データベースって聞いたことある?「会社のお客さんの情報を管理するシステム」みたいなやつだけど、実はいろんな種類があるんだ。その中で最近めっちゃ注目されているのが「MongoDB」っていうやつ。従来のデータベースと全然違う仕組みで、データの保存方法がとても自由なんだよ。この記事を読めば、MongoDBが何で世界中の会社で使われているのか、その秘密がわかるよ。

MongoDBって、よく聞くんですけど、普通のデータベースと何が違うんですか?

いい質問だね。普通のデータベースは、エクセルのように「決まった形の表」にデータを入れるんだ。つまり、名前の欄・住所の欄・電話番号の欄みたいに、あらかじめ決められた場所に情報を入れていく仕組み。でもMongoDBはその枠を気にしない。自由な形でデータを保存できるんだよ。
自由な形?どういうことですか?

例えば、Aさんの情報に「好きな色:青」って情報があるけど、Bさんには好きな色がない、みたいな場合があるよね。普通のデータベースだと「空白にする」みたいなことになるけど、MongoDBは「そもそもその情報を入れなくていい」ということができるんだ。データの形が柔軟だからね。
へ〜!それってどんなときに便利なんですか?

スマホアプリやWebサービスを開発しているとき、最初は「ユーザーの名前と年齢だけ保存しよう」って思ってても、途中から「プロフィール画像も保存しようか」とか「好きなゲームのジャンルも入れようか」みたいに、保存する情報がどんどん変わっていくことがあるんだ。MongoDBはそういう変化に強いから、修正が楽なんだよ。
📝 3行でまとめると
  1. MongoDBはデータの形が自由でスキーマがないため、従来のデータベースより柔軟に情報を保存できる
  2. データをJSON形式(つまり、Webで使う標準的なデータの形)で保存するから、Webアプリケーション開発と相性がいい
  3. 大量のデータをスケーラブルに扱える(つまり、データが増えても対応しやすい)から、成長中のサービスに最適

もうちょっと詳しく

MongoDBを理解するには、まず「NoSQL」という概念を知ることが大事だよ。これはつまり「SQLというデータベース言語に頼らないデータベース」という意味。従来のデータベース(MySQLやPostgreSQLなど)は、「SELECT」とか「INSERT」みたいな決まった命令でデータを操作するんだけど、MongoDBは違う方法を使う。JSONというWebで標準的なデータ形式を直接保存・操作できるから、プログラマーにとってめっちゃ扱いやすいんだ。特にJavaScriptやPythonみたいなプログラミング言語を使う開発者からは「自分のコードとの相性が抜群!」って好かれている。

💡 ポイント
MongoDBはWebアプリケーション開発の「スピード」と「柔軟性」を両立させたデータベースなんだ。だからスタートアップやベンチャー企業でめっちゃ人気!

⚠️ よくある勘違い

❌ 「MongoDBなら何でも自由に保存できるから、どんなデータでも大丈夫」
→ いや、データベースとして重要な「データの一貫性」や「安全性」の仕組みはちゃんと備わってるんだ。自由な形でデータを保存できるというのは「スキーマに縛られない」という意味であって、「好き勝手にやってOK」という意味ではないんだよ。
⭕ 「MongoDBは形の定義は自由だけど、データの品質や安全な保存方法はちゃんと考えないといけない」
→ つまり、自由度が高いからこそ、開発者がもっと気をつけてデータを管理する責任が増えているということ。便利だけど、その分スキルが必要ってわけだ。
なるほど〜、あーそういうことか!

[toc]

MongoDBは「自由な形のデータベース」

従来のデータベースとの違い

データベースというのは、会社の顧客情報とか、ネットショップの商品情報とか、大量の情報を整理して保存するためのシステムなんだ。これまで主流だったのは「リレーショナルデータベース」という種類で、これはエクセルのように「行と列」で整理されていたんだよ。例えば、顧客管理なら「ID・名前・住所・電話番号」みたいな列があって、そこに顧客の情報を1行ずつ入れていく感じね。

このやり方は、サイズが決まっているデータ、つまり「どの顧客も必ず名前と住所がある」みたいな場合には最高に効率的なんだ。でもね、現代のWebアプリケーションは複雑になってきたんだよ。

例えば、ソーシャルメディアを想像してみてほしい。ユーザーの基本情報(名前・年齢)は誰もが持ってるけど、プロフィール写真を設定してる人もいれば、していない人もいる。自己紹介文を書いてる人もいれば、書いていない人もいる。さらに、ユーザーが「今チェックインしている場所」みたいな新しい情報を保存したくなったとき、従来のデータベースだと全ユーザーのテーブルを修正しなきゃいけなくなるんだ。これってめっちゃ大変だよね。

MongoDBは、こういう「柔軟なデータの保存」を最初から想定して設計されたんだ。つまり、各ユーザーが持ってるデータが違ってもいい、後から新しい情報を追加したくなったときに簡単に対応できる、そういう自由度を大事にしているわけだ。

JSONという形でデータを保存する

MongoDBがデータを保存するときに使うのが「JSON」という形式なんだ。JSONというのは、JavaScriptという言語で使われていたデータの書き方が、いまや世界中のWebアプリケーションで標準的に使われるようになったものだ。つまり、プログラマーが最も使いやすいデータの形ということだね。

JSONはこんな感じで書くんだ。「キーと値のペア」という形でデータを整理しているんだ。「nameというキーに対して、値は太郎」という感じね。MongoDBはこのJSONをそのままデータベースに保存できるから、JavaScriptでプログラムを書いている開発者にとって、本当に使いやすいんだよ。データを取り出すときも、プログラムの中で直接JSONとして扱えるから、変換する手間がないんだ。

そして、MongoDBのすごいところは、JSONのデータを直接クエリ(つまり、「このデータを取り出してほしい」という命令)で検索・操作できるってことなんだ。従来のデータベースだと「SELECT」とか「WHERE」みたいなSQLという言語を覚える必要があるけど、MongoDBはその必要がないわけだ。

MongoDBがスキーマレスって何が便利なの?

スキーマレスとは「形の定義がない」という意味

ここで「スキーマ」という専門用語が出てくるけど、これはつまり「データの形を決めるルール」という意味なんだ。従来のデータベースでは、テーブルを作るときに「名前という列は文字列で、年齢という列は数字」みたいに、厳密に決めるんだよ。これがスキーマだ。

MongoDBは「スキーマレス」だから、こういうルールがない。つまり、同じコレクション(これはテーブルに相当する)の中に、形が違うドキュメント(これはレコード、つまり1つのデータに相当する)が混在できるわけだ。

実際の例で説明しよう。ECサイト(オンラインショップ)の商品情報を保存する場合を考えてほしい。洋服は「サイズ:S・M・L」という情報が必要だけど、本は「ページ数」という情報が必要だよね。従来のデータベースなら、「サイズ」と「ページ数」という両方の列を用意して、洋服ではページ数の欄を空白にする、という変なことになるんだ。

でもMongoDBなら、洋服のデータには「サイズ」を入れて、本のデータには「ページ数」を入れればいいだけなんだ。各商品が必要な情報だけを保存できるから、無駄がないし、データベースの管理も楽になるわけだ。

開発スピードが速くなる理由

スキーマレスだと、開発中に仕様が変わったときに本当に便利なんだよ。例えば、最初は「ユーザーの名前と年齢だけ保存しよう」って決めたのに、途中から「ユーザーの出身地も保存したい」ってなった場合、従来のデータベースだとスキーマを修正する作業が必要になるんだ。これ、本当に面倒くさいんだ。

でもMongoDBなら、新しいデータから出身地を追加するだけでいいんだ。古いデータには出身地がないドキュメントが残ることになるけど、それでいいわけだ。だから、Webアプリケーションの開発って、仕様変更がめっちゃ多いんだけど、MongoDBを使うとその対応が簡単になるんだよ。

MongoDBのデータベースの構造を理解しよう

MongoDBの階層構造

MongoDBのデータは、以下のような階層構造になってるんだ。階層というのは「上下関係」という意味で、大きなものの中に小さなものが入ってる、みたいな感じだ。

MongoDBサーバー(一番大きい)→ データベース → コレクション → ドキュメント(一番小さい)

これを身近な例に置き換えると、図書館だと思ってほしい。MongoDBサーバーは図書館そのもの、データベースは図書館の中の「文学」「歴史」「技術書」みたいな分野、コレクションはその分野の中の「日本文学」「海外文学」みたいな細かいカテゴリ、ドキュメントは個別の「本」という感じだ。

つまり、MongoDBサーバーの中に複数のデータベースを作ることができて、各データベースの中に複数のコレクションがあって、各コレクションの中に複数のドキュメント(JSONデータ)が入ってるわけだ。

ドキュメントの構造

MongoDBの1つのドキュメントは、JSONという形式で保存されるんだ。中身はこんな感じ。「_id」というのは、このドキュメントを識別するためのユニークな番号なんだ。つまり、この太郎さんのデータをどうやって見つけ出すかというときに、この_idを使って検索するわけだね。

見てわかるように、データの中に他のデータが入っていたり(「address」の中に「prefecture」と「city」が入ってる)、複数の値が入ったり(「hobbies」は配列で複数の値を持ってる)できるんだ。これが「ドキュメント」の構造で、複雑な情報を1つのドキュメントで表現できるから、現代のアプリケーションに合ってるんだよ。

MongoDBはなぜスケーラブルなのか

大量のデータに対応できる

MongoDBが「スケーラブル」つまり「データが増えても対応しやすい」と言われているのは、データを複数のサーバーに分散させて保存できるからなんだ。これを「シャーディング」と呼ぶんだけど、つまり「データを複数の場所に分ける」という意味だ。

例えば、YouTubeみたいなめっちゃ大量のユーザーがいるサービスを想像してほしい。全ユーザーのデータを1つのサーバーに入れようとしたら、そのサーバーが爆発しちゃう。だから、ユーザーAのデータはサーバー1に、ユーザーBのデータはサーバー2に、みたいに分けて保存するわけだ。MongoDBはこの「分散保存」を最初から想定して設計されてるんだよ。

さらに、MongoDBは「レプリケーション」っていう仕組みもあるんだ。これはつまり「同じデータを複数の場所に保存しておく」ということなんだ。例えば、サーバー1が壊れちゃった場合でも、サーバー2と3に同じデータがあれば、サービスが止まらないわけだ。これが「高可用性」と呼ばれる特性で、重要なサービスを運営する企業にとっては本当に大事な機能なんだよ。

成長中のサービスに最適

スタートアップや成長中のWebサービスって、最初は小さく始まるけど、ユーザーが増えると一気にデータが増えるんだ。そういうときに、MongoDBは本当に活躍するんだよ。なぜなら、「最初は1台のサーバーで始まって、ユーザーが増えたら複数のサーバーに分散させる」みたいな成長が簡単にできるからなんだ。従来のデータベースだと、こういう成長対応が本当に大変なんだ。

だから、月日が経つにつれてユーザーが爆発的に増えるようなサービスには、MongoDBが選ばれることが多いんだ。最初から大規模なシステムを構築する必要がなくて、必要に応じて規模を大きくしていけるからね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大人になってから「これ知らなかった…」と恥ずかしい思いをした経験から、このサイトを作りました。お金・仕事・社会のしくみって、学校で教えてくれないのに知らないと損することだらけ。むずかしい言葉を「あーそういうことか!」って思えるまでかみ砕いて説明するのが得意です。主に経済・法律・税金・ライフイベント周りの用語を毎日更新中。

目次