よくある質問・用語集

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

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

MongoDBとは

MongoDBとは、ビッグデータやIoTのデータ処理に利用されるNoSQLサーバである。2007年にDoubleClickのチームが開発し、Apache 2ライセンスの下でオープンソースソフトウェアとして公開されている。MongoDBは、公式ドライバとしてC言語やC++、JavaScript、Javaなどがある。

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

MongoDBの概要

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

MongoDBは、ドキュメント指向データベースである。ほとんどのNoSQLが採用しているKVS(Key Value Store)よりは高機能で、RDB(Relational Database)に近い検索性を備えている。MongoDB側でデータをソートすることも可能である。そのため、RDBになれたユーザにとっては非常に扱いやすい。それでいて、高速なデータ処理を行うことができることが大きな特徴である。また、MongoDBでは、RDBMSのようにデータの形式を決めておく必要がないため、容易に導入することができる。ただし、MongoDBではトランザクションやデータの結合を行うことができないなど、RDBで利用できる機能がすべて取得できる訳ではない。

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

MongoDBの特徴

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

データ処理が高速

MongoDBはインメモリで動作するため、高速なデータI/Oが可能となっている。また、ドキュメント指向のデータベースを採用したNoSQLサーバのため、KVSよりも高機能でRDBと同じような感覚で運用することができる。検索したデータの並び替えなど、データベース側で行える処理もそろっている。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は、NoSQL型のデータベースだが、RDBに似た構造でデータを管理することができる。しかし、リレーショナルなデータ構造は取ることはできないため、データの相関関係を表現するすることができない。

MongoDBは、データベースの中にコレクションを作成し、コレクションには、キーの名前と値から構成されるドキュメントを配置することができる。RDBと比較すると、コレクションはテーブルに、ドキュメントがレコードに、フィールドが列に相当する。

MongoDBの操作

MongoDBでは、データベースの操作はSQLとは異なるが、SQLと対応づけしやすいコマンド構造になっている。例えば、ドキュメントの挿入(SQLのINSERT)にあたるコマンドはinsertである。同じように、ドキュメントの更新(SQLのUPDATE)にあたるコマンドもupdateとわかりやすい。

また、ドキュメントの取得(SQLのSELECT)にあたるコマンドはfind、ドキュメントの削除(SQLのDELETE)にあたるコマンドはremoveである。findでは結果を取得するフィールドも指定することができる。update、find、removeの検索条件では、SQLで使う演算子(=<>など)の代わりに、$lt、$gtなどのクエリセレクタを使うことができる。

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を使用したシステム構築サービスを提供したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供している。これは、MongoDB単体のサポートではなく、Linuxなどを含むシステム全体に対するサポートを行っている。

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

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

オープンソースで大量ログデータの統合管理
〜ログ管理OSS「Graylog」のご紹介〜

日程: 1月16日(木)デージーネット東京営業所
1月24日(金)デージーネット本社
内容: 大量のログファイルを収集しても、事件・事故が発生したときにログデータを活用できていない、もっとログデータをわかりやすく管理したいなどの悩みを解決する大量ログデータ統合管理のOSS「Graylog」についてご紹介いたします。
ご興味のあるかたはぜひご参加ください。

セミナー申込

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

関連用語

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

MongoDBとは先頭へ