MongoDBは、一般的なドキュメントベースの分散データベースであり、リレーショナルデータベースとノンリレーショナル(NoSQL)データベースの中間に位置する製品です。ノンリレーショナルデータベースの中でもっとも機能が豊富であり、リレーショナルデータベースに似た特性を持っています。
MongoDBドキュメントの例
{
"_id": "5cf0029caff5056591b0ce7d",
"firstname": "Jane",
"lastname": "Wu",
"address": {
"street": "1 Circle Rd",
"city": "Los Angeles",
"state": "CA",
"zip": "90404"
},
"hobbies": ["surfing", "coding"]
}
特段特別なことはありません、ただのJSONデータです。MongoDBに格納されるドキュメントデータはこのようなJSONデータと似ています。JSONデータの保存により、MongoDBに格納されるデータ形式は非常に柔軟です。MySQLとは異なり、固定されたテーブル構造が必要ないため、いつでもフィールドを追加または削除でき、速度も非常に速いということです。
ヒント: 複雑なトランザクション、結合、データの整合性に高い要件がなく、単に高速なデータの読み書き、高い同時実行性、柔軟で自由な保存形式を追求し、事前にテーブル構造を定義する必要がない場合、MongoDBは良い選択肢です。
MongoDBの特性
高パフォーマンス
MongoDBは高性能なデータ永続性を提供します。特に、
- 埋め込みデータモデルを使用することで、データベースシステムのI/O操作を削減できます。
- インデックスのサポートにより、クエリの効率が非常に高く、インデックス付きのフィールドは埋め込みドキュメントのフィールドまたは配列のキーであることができます。
豊富なクエリ言語
MongoDBはさまざまなビジネスクエリシナリオに対応する豊富なクエリ式をサポートしています。
地理空間クエリのサポート
O2Oビジネスや地理関連ビジネスでは、近くの店舗の検索、近くの人物の検索、または商業地区にいるかどうかの判定など、頻繁に地理空間クエリが必要です。
高可用性
MongoDBのレプリカセットは次の機能を提供します:
- 自動フェイルオーバー
- データの冗長性
レプリカセットは同じデータセットを維持するmongodインスタンスのグループであり、データの冗長性と高可用性をサポートします。
水平スケーラビリティ
MongoDBは水平スケーリングをサポートします。シャーディングを使用することで、データはクラスター内の複数のマシンに分散されます。