MongoDB の特徴
今回は MongoDB の特徴について見てみよう。
公式サイトにも記載されている内容として、特徴は大きく以下のように整理できる。
- ドキュメントデータベース(NoSQL)
- 特殊クエリ
- 高性能
- 高可用性
- 水平スケーラビリティ
ドキュメントデータベース(NoSQL)
JSON のようにキー・バリュー(Key-Value)の組み合わせをそのまま保存できる、ドキュメント形式のデータベースである。バリューにはさまざまな形式を指定できる。たとえば数値や文字列はもちろん、配列やオブジェクトを保存できることも特徴である。また、このバリューの形式は動的に変更でき、同じフィールド名に複数の形式を入れることもできる。つまり、スキーマレス(schemaless)なドキュメントデータベースである。
性能
性能を出すために、次のような機能が実装されている。
- 埋め込みデータモデルによる I/O 処理の削減
- インデックス(index)のサポート
NoSQL でありながら「インデックス」をサポートしていることが MongoDB の特徴である。「インデックス」に関連して「ユニークキー」を指定することもできる。
特殊クエリ
JSON 形式で指定する特殊クエリを活用して DB を検索する。クエリで実行できる操作は基本的な CRUD 操作はもちろん、以下のような特徴的なクエリがある。
- 集計(Aggregation、Map-Reduce)
- 「テキストインデックス」を使った文字列検索
- 地理空間クエリ
集計(Aggregation、Map-Reduce)では、保存されたデータに対してさまざまな統計処理を実行できる。クエリ単体の組み立ては独特な実装なので慣れが必要だが、処理順序がパイプライン化されているため、コードの見通しはよい。
「地理空間クエリ」は、組み込みの「GeoJSON」形式を利用して「範囲内のポイント検索」を行うことができる。
可用性
MongoDB はレプリカセットという機能でレプリケーション機能を提供する。このレプリカセットは自動フェイルオーバーとデータ冗長性を提供する。
水平スケーリング
水平スケーリングという特徴は、「マシンを増やすことで性能を向上できる」ということである。MongoDB では、コア機能であるシャーディングという仕組みによって水平スケーラビリティを実現している。
複数ストレージエンジンのサポート
MongoDB は複数のストレージエンジンをサポートする。一般的に使用されるファイルシステムのほか、インメモリエンジンを選択できる。また、ストレージエンジン API を公開しているため、サードパーティ製ストレージエンジンを作成することもできる。