MongoDB (Document NoSQL)(モンゴディービー)
10gen (現MongoDB Inc.) 2009年公開のドキュメント指向NoSQLデータベース。BSON 形式・スキーマレス・水平スケール、JavaScript Web 開発に最適化。
概要
MongoDB は2007年Dwight Merriman / Eliot Horowitz / Kevin Ryan が10gen (現MongoDB Inc.・米New York) を設立、2009年に初版公開したドキュメント指向NoSQLデータベース。「humongous」(巨大な) 由来。RDBMS のテーブル / 行ではなく「Document」(JSON 風オブジェクト) と「Collection」を使うドキュメント指向、BSON (Binary JSON) 形式・スキーマレス設計・水平スケール (Sharding) で大規模Web アプリ向け。Node.js / Express / MongoDB のMEAN (MongoDB-Express-Angular-Node) スタックでJavaScript 開発者に圧倒的普及。
MongoDB 主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2007 | 10gen 設立 |
| 2009-02 | MongoDB 1.0 公開 |
| 2013-09 | MongoDB 2.4 |
| 2015-03 | MongoDB 3.0 (WiredTiger エンジン) |
| 2016-10 | MongoDB Atlas 公開 (マネージド) |
| 2017-10 | NASDAQ IPO ($24 → 初日 $30) |
| 2018-06 | MongoDB 4.0 (Transactions) |
| 2018-10 | ライセンスを SSPL に変更 |
| 2019-10 | MongoDB 4.4 (Distributed Transactions) |
| 2021-07 | MongoDB 5.0 (Time Series Collection) |
| 2022-07 | MongoDB 6.0 |
| 2023-08 | MongoDB 7.0 |
| 2024-04 | MongoDB 8.0 (Queryable Encryption) |
BSON (Binary JSON)
MongoDB 独自データフォーマット (JSON拡張):
| 機能 | JSON | BSON |
|---|---|---|
| データ型 | 6個 | 18個+ |
| Binary データ | ❌ | ◯ |
| Date | 文字列 | ネイティブ |
| ObjectId | ❌ | ◯ (12byte) |
| Decimal128 | ❌ | ◯ (高精度) |
| Embedded Document | ◯ | ◯ |
| Array | ◯ | ◯ |
| バイト数 | テキスト | バイナリ (高速) |
ドキュメント例
// MongoDB Collection: users
{
_id: ObjectId("507f1f77bcf86cd799439011"),
name: "Alice",
email: "[email protected]",
age: 30,
hobbies: ["reading", "hiking", "coding"],
address: {
city: "Tokyo",
country: "Japan",
zipcode: "100-0001"
},
created_at: ISODate("2024-12-01T10:00:00Z"),
tags: ["premium", "verified"]
}
RDBMS のように複数テーブル JOIN せず、1ドキュメントで関連情報を集約 (denormalization)。
RDBMS vs MongoDB
| 項目 | RDBMS (MySQL/PG) | MongoDB |
|---|---|---|
| データモデル | テーブル + 行 | Collection + Document |
| 構造 | スキーマ強制 | スキーマレス |
| トランザクション | ACID | ACID (4.0+) |
| 結合 | JOIN | $lookup (限定的) |
| インデックス | B-Tree / Hash | B-Tree / 全文 / Geo |
| 水平スケール | 困難 (Sharding 別ツール) | 標準 (Sharding) |
| 学習曲線 | SQL | MongoQL (独自) |
MongoDB Atlas (Managed)
2016年10月公開・MongoDB Inc. の主力収益源:
- AWS / GCP / Azure マルチクラウド
- 自動スケール
- バックアップ自動化
- Replica Set + Sharding 自動構成
- $0.08 - $0.16 / 時間
- Free Tier (M0・512MB)
- Enterprise Tier (M40+)
- 2024年売上 $1.5B (MongoDB Inc. 全体)
SSPL ライセンス物議 (2018-)
2018年10月MongoDB Inc. が AGPL → SSPL (Server Side Public License) 変更:
- クラウドプロバイダの「ただ乗り」防止
- AWS / Azure / GCP がMongoDB as a Service 提供禁止
- AWS は DocumentDB (MongoDB互換) で対抗
- OSI (Open Source Initiative) が SSPL を非OSS 認定
Linux Foundation の Valkey (Redis フォーク・2024) と同様の問題、オープンソース業界の「Cloud Big Co. vs Original Devs」議論の象徴。
関連用語との違い
- vs Redis: 永続的Document / In-Memory KV
- vs PostgreSQL JSONB: NoSQL / RDBMS
- vs DynamoDB: マネージド / 自由
FAQ
Q1: MongoDB はACID? A: 4.0+ (2018) で完全Transactions 対応・複数Document 跨ぎACID OK。それ以前は単一Document 内のみACID。
Q2: 個人開発に最適? A: スキーマ柔軟性で素早いプロトタイピング向き。学習教材豊富 (MongoDB University 無料)。Atlas Free Tier で開発開始可。
Q3: PostgreSQL JSONB との比較? A: PG JSONB はRDBMS 中のJSON 拡張・MongoDB はDocument がメイン。複雑なJSON クエリ・大規模Sharding ならMongoDB。