よくある質問・用語集

サーバ構築のデージーネットTOP > OSS情報 > よくある質問・用語集 > 用語集 > MongoDBとは

  • もっと調べる
  • どうやって使う?

MongoDBとは

MongoDBとは、ビッグデータやIoTのデータ処理に利用されるNoSQLサーバである。Apache 2ライセンスの下でオープンソースソフトウェアとして公開されている。

AmazonやGoogleが、クラウド・サービス上でMongoDB互換のDBを提供するなど、NoSQLとしては最もスタンダードなソフトウェアである。

MongoDBの概要

MongoDBの名前に含まれる "Mongo" は、巨大という意味をもつ単語 "Humongos" からきている。インメモリで動作するため、高速なデータI/Oが可能となっている。また、データの分散配置やレプリケーションを行うことも可能となっており、スケーラビリティ・アベイラビリティの高いデータベースを構築することができる。

MongoDBは、ドキュメント指向データベースである。ほとんどのNoSQLが採用しているKVS(Key Value Store)よりは高機能で、RDB(Relational Database)に近い検索性を備えている。MongoDB側でデータをソートすることも可能である。そのため、RDBになれたプログラマーにとっては非常に扱いやすい。それでいて、高速なデータ処理を行うことができることが大きな特徴である。ただし、MongoDBではデータの結合を行うことができないなど、RDBで利用できる機能がすべて利用できる訳ではない。

また、MongoDBではRDBよりも柔軟に冗長化を行うことができる。プライマリノードが故障した場合には、自動的にスレーブノードが昇格するなど、RDBよりも冗長性にすぐれている。NoSQLとしての高速性だけでなく、システムの拡張性にも優れている。また、コンテナでも管理しやすい通信方式を採用していることなどから、IoTのデータ解析などでも良く利用される。

MongoDBの特徴

MongoDBには以下のような特徴がある。

データ処理が高速

MongoDBはインメモリで動作するため、高速なデータI/Oが可能となっている。また、ドキュメント指向のデータベースを採用したNoSQLサーバのため、KVSよりも高機能でRDBと同じような感覚で扱うことができる。検索したデータの並び替えなど、データベース側で行える処理もそろっている。

外部システムとの連携も可能

MongoDBはJSONに似た形式でデータを保存する。アクセスはWeb APIを利用し、検索結果もJSONに似た形式で出力されるため、外部システムとも容易に連携することができる。

システムの冗長性に優れている

MongoDBは、レプリカセットと呼ばれる冗長構成を組むことができる。レプリカセットには、プライマリとセカンダリと呼ばれるノードがある。データはメインとなるプライマリに保存され、セカンダリサーバにもコピーされる。プライマリが停止した場合、セカンダリがプライマリに自動で昇格する。このように、レプリカセットを利用することで、1台のサーバが障害で停止してもデータを失うことがなくサービスを継続することができる。

MongoDBレプリカセット

システムの拡張性に優れている

MongoDBは、シャーディングと呼ばれるデータを分散する機能がある。シャーディングでは、データを複数のサーバに分散して保存できるため、サーバの台数を増やすことでシステムの拡張を行うことができる。シャーディングには、configサーバとmongosサーバ、シャーディングクラスタサーバを必要とする。

MongoDBシャーディング

configサーバ

configサーバは、MongoDBシステム全体の設定を管理するサーバである。シャードに関する情報も設定サーバが管理しているため、configサーバが停止するとシャーディングに関する情報の更新ができなくなる。そのため、MongoDBでシャーディングを使った負荷分散を行う場合には、configサーバをレプリカセットで冗長化する場合が多い。

mongosサーバ

mongosサーバは、MongoDBでシャードを利用するときに処理を振り分けるサーバである。クライアントからの問い合わせを処理し、シャードクラスタ内の適切なデータを持ったノードに処理を振り分ける。

シャーディングクラスタサーバ

シャーディングクラスタサーバは、実際にデータを保存するサーバである。シャーディングクラスタサーバも可用性を高めるためレプリカセットを利用し、冗長化を行う場合が多い。データが格納されるサーバは、シャードキーによって決定される。データは「チャンク」と呼ばれる単位で管理され、データが設定した最大サイズ(標準では64MB)になるとチャンクに分割される。

MongoDBの用途とシステム構成

MongoDBは以下のようなシステムへの導入が適している。

  • 大量にあるデータを高速に処理したい
  • スモールスタートから初めてアクセス数増加に合わせてデータベースをスケールアウトしていきたい
  • データの冗長化を行いたい

大規模なMongoDBのデータベースでは、シャーディングもレプリカセットも有効にしたシステム構成となる。

MongoDBの商用版

MongoDBには、MongoDB Enterprise Advancedという商用版も用意されている。MongoDB Enterprise Advancedでは、以下の機能が利用できる。

Ops Manager

Ops Managerとは、MongoDBの統合管理インターフェースである。Ops Managerでは、WEBインターフェースで以下の操作ができる。

  • レプリケーションクラスタの構築
  • シャーディングクラスタの構築
  • データの追加/削除
  • サーバ状況などのモニタリング
  • データのバックアップ/リストア

In-Memory Storage

In-Memory Storageとは、MongoDB Enterprise Advancedでのみ利用できるストレージエンジンである。In-Memory Storageでは、データが非永続的でメモリ上に保存するため、特に書き込みに関する処理で高速処理が可能となっている。In-Memory Storageを利用しながらデータを永続的に保存するためには、レプリカセットを行う必要がある。

デージーネットの取り組み

デージーネットでは、様々なオープンソースソフトウェアを扱っている。最近では、バックエンドのデータベースとしてMySQLやPostgreSQLではなく、MongoDBを採用するソフトウェアも多くなっている。そのため、MongoDBを利用することは多い。また、システムを提案する場合にも、絶対に失ってはいけないデータを扱うとき、高速なデータベース検索が必要なとき等でMongoDBを推奨している。例えば、以下のようなMongoDBを使用したシステム構築の実績がある。

  • MongoDBを使用したビックデータの解析システムを構築
  • レプリケーション、シャーディングを機能を有効にして、冗長化、負荷分散を実現

MongoDBの基本的な情報やインストール方法は「MongoDB Enterprise Advanced調査・検証報告書」に掲載している。

【カテゴリ】:ビッグデータ  オープンソースソフトウェア  IoT  

  • もっと調べる
  • どうやって使う?

関連用語

MongoDBに関連するページ(事例など)


デージーネット用語集のページです。「MongoDB」という用語と関連情報について説明します。「MongoDB」について情報を収集する際、サービスをご検討いただく際などに用語集ページをお役立てください。

MongoDBとは先頭へ