ドキュメント指向DB どきゅめんとしこうでーたべーす
MongoDBJSONBSONスキーマレスNoSQLコレクション
ドキュメント指向DBについて教えて
簡単に言うとこんな感じ!
ドキュメント指向DBは「JSONファイルの引き出し」みたいなDBだよ!Excelの表じゃなくて、Aさんのデータは住所あり・Bさんは住所なし・Cさんはお気に入りリスト付き、みたいに形が違っても全部一緒に保存できるんだ。商品カタログやブログ記事みたいに「モノによってデータ項目が違う」場合に最強なんだ!
ドキュメント指向DBとは
ドキュメント指向DB(Document-Oriented Database)とは、データを「ドキュメント」と呼ばれるJSON(またはXML・BSON)形式の自己記述的なデータ単位で管理するNoSQLデータベースです。RDBのように行と列の固定スキーマではなく、各ドキュメントが独自の構造を持てる点が最大の特徴です。
RDBの「テーブル」に相当するものをコレクションと呼び、コレクションは同じ種類のドキュメントをまとめる入れ物です。ただしRDBと異なり、同じコレクション内のドキュメントが全く異なる構造を持っていても構いません。これをスキーマレス(Schema-less)と呼びます。
ドキュメントはネスト(入れ子)構造や配列を持てるため、RDBでは複数テーブルに分散させていたデータを1つのドキュメントにまとめられます。これによりJOIN不要でデータを取得でき、高速なアクセスが可能です。一方で、データの整合性管理はアプリケーション側の責任となります。
RDBとの構造比較
| 概念 | RDB | ドキュメントDB |
|---|---|---|
| データの入れ物 | テーブル | コレクション |
| 1件のデータ | 行(Row) | ドキュメント |
| データ定義 | カラム(固定) | フィールド(自由) |
| リレーション | 外部キー・JOIN | 入れ子・参照 |
| スキーマ | 事前定義が必要 | 不要(スキーマレス) |
| 検索言語 | SQL | 独自クエリ(MongoDB Query Language等) |
歴史と背景
- 2007年:CouchDBが公開。HTTPとJSON、MapReduceを採用したドキュメントDBの先駆け
- 2009年:MongoDBが公開。高性能・使いやすさで急速に普及しNoSQLの代名詞に
- 2013年:Firebaseが登場。リアルタイム同期対応のドキュメントDBとしてモバイル開発に普及
- 2017年:Google Cloud Firestoreが公開。Firebaseの後継としてスケーラビリティが向上
- 2020年代:MongoDBがAWS/Azure/GCPのマネージドサービスに対応。AWS DocumentDBも登場
主な製品比較
| 製品 | 特徴 | 得意な用途 |
|---|---|---|
| MongoDB | 豊富な機能・強力な集計パイプライン | ECサイト・CMS・ログ分析 |
| Firestore | リアルタイム同期・モバイル対応 | チャットアプリ・スマホゲーム |
| CouchDB | HTTP API・オフライン同期 | 分散システム・PWA |
| Elasticsearch | 全文検索特化 | ログ検索・コンテンツ検索 |
| AWS DocumentDB | MongoDBとAPI互換のマネージドサービス | AWS環境でのMongoDB利用 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 8259 | JSON(JavaScript Object Notation)の仕様 |
| BSON仕様 | MongoDBが使うバイナリJSON形式 |
| MongoDB Wire Protocol | MongoDBクライアント通信プロトコル |