MongoDBってどんなデータベース?

2016.06.10

こんにちは、YDCのミッツです。
データベースと言えば暗にRDB(リレーショナルデータベース)を思い浮かべる方が多いと思いますが、
2010年代に入り、RDB以外のNoSQLが一層、注目を集めるようになっています。
しかし、まだまだNoSQLという言葉を聞いたことがあるけれど
どんなものがあるのかよく知らないといった方も多いのではないでしょうか。
今回はNoSQLの一つであるMongoDBの概要を簡単にご説明したいと思います。

MongoDBとは

MongoDBとは所謂、NoSQLの一つでドキュメント指向型に分類されるDBMSです。
数多くあるNoSQLの中でも高いシェアを誇り、
現在、最も注目されているDBMSの一つです。

NoSQLとは

さて、ここでNoSQLとはどのような意味か復習しておきたいと思います。
NoSQLとは"Not only SQL"の略とされ、RDBMS以外のDBMS全般を意味する分類語です。
2010年代に入りITで扱う情報量は莫大なものとなり、
従来のRDBMSが適さない局面が出てくるようになりました。
これを打破するための手段として、MongoDBをはじめとする様々なNoSQLが活用されています。
NoSQLは非常に多くの種類がありますが、データモデルによって
大きく次の4種に分類することが可能です。

・ Key/Value型 ・ カラム指向型 ・ ドキュメント指向型 ・ グラフ型

nosql_1_1.jpg

今回紹介するMongoDBは上記のうち、ドキュメント指向型に分類されます。
ドキュメント指向型のDBMSとしては他にCouchDBなどがあります。

スキーマレスなデータベース

ではドキュメント指向型データベースはどのようなデータベースなのでしょうか。
RDBと比較することで、ドキュメント指向型データベースの
データ構造について説明したいと思います。

まず、ドキュメント指向型データベースでは一件分のデータをドキュメントと呼びます。
ドキュメントはBSONというJSONと非常に良く似た形式で記述され、一つ以上のフィールドで構成されます。
ドキュメントはRDBMSでいうところのレコードに当たり、フィールドがカラムに相当します。
因みにBSONとは"バイナリ型JSON"の略語です。

RDBMSではスキーマが固定されているため、
全てのレコードはカラムの構成が同様となっています。
しかし、ドキュメント指向型データベースは固定のスキーマを持たないため、
個々のドキュメントが同様のフィールドを持っている必要がありません。

また、フィールドが持つ値を配列にすることもできますし、
ドキュメントの中にドキュメントを入れ子にして記述する埋め込みドキュメントにも対応しています。

nosql_1_2.jpg

RDBにはないこの自由なデータ構造により、
表形式で表現することが難しい情報を格納することができます。
例えばECサイトの商品カタログ情報では
商品がどのような属性をもつ必要があるかは商品のジャンルによって異なります。
また、サイトで扱う商品のジャンルが将来的に増えることもあり得ます。
このような場合にドキュメント指向型データベースであれば柔軟に対応することが可能になります。

レプリカセット・シャーディング

MongoDBの最大の特徴はドキュメント指向型であること、
つまり、データ構造がスキーマレスで非常に柔軟であることです。
それ以外のMongoDBが持つ代表的な特徴としてレプリカセット、シャーディングという2つの機能を紹介します。

レプリカセット

MongoDBにはマスター/スレーブ方式のレプリケーション機能「レプリカセット」があります。
レプリカセットを組んでいるとマスターノードへの書き込みがスレーブノードに同期されますので、
マスターが落ちた際、スレーブがマスターに昇格し、データロスト、ダウンタイムを最小限に抑えることができます。
また、地理的に離れたデータセンターにノードを分散させれば災害対策を行うこともできます。

レプリカセットの主な目的は信頼性の向上ですがレプリカセットを組むことで、
読み取りリクエストをノード間で分散させパフォーマンスを向上することも可能です。

シャーディング

シャーディングとは、データを複数のサーバに分散させる機能です。

リレーショナルデータベースではデータ構造上、
複数のノードにデータを分散させることが困難です。
そのため、処理性能を上げるためにはサーバのCPUやメモリといった
ハードウェアを高性能なものにするスケールアップを行う必要があります。

それに対してMongoDBはシャーディングにより、
サーバの数を増やすことで性能を上げる(スケールアウト)ことが可能です。

スケールアップで処理性能を上げるためには
非常に高価なハードウェアを購入する必要がありますが、
スケールアウトの場合は安価なサーバを接続することで、
コストを抑えて処理性能を向上することが可能になります。

MongoDBの苦手な処理

ここまでの説明で、MongoDBは柔軟なデータ構造を持ち、安価に高いパフォーマンスを
実現できるデータベースであることをご理解いただけたかと思います。

しかし、苦手としている処理もあります。
MongoDBの最大の弱みは、トランザクションが行えない点です。

したがってMongoDBではトランザクションが必要となるような業務に
用いるべきではないでしょう。

トランザクションが必要となるようなデータには従来通りRDBMSを使用し、
MongoDBはそのスキーマレスで柔軟な構造を活かせるデータに使用するといったように
適材適所で使い分けるという考え方が必要です。

ユースケース

では具体的にどのような場合にMongoDBが使われているのでしょうか。
MongoDBの最大の利点は柔軟なデータ構造にあります。
その利点を活かしてレガシーデータの集約基盤として活用したり
テーブル設計が不要ですぐに使い始めることができるため、
アジャイル開発に用いられたりしています。
興味深いところではIoTでセンサーデータの格納先として使用されている例もあります。

MongoDBの公式ホームページではその他にも様々なユースケースが紹介されています。
また、実際に導入した企業別に事例が紹介されています。
興味のある方はMongoDBの公式ホームページを訪れ参照してみてください。

まとめ

いかがでしたでしょうか。

データベースと言えばRDBのみであった時代から
RDBに加えMongoDBをはじめとした多くのNoSQLが選択肢に入る時代に変わってきています。
今後、新たにシステムを開発・導入する際には
RDB以外にも選択肢があることを頭の片隅に置いていただければと思います。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail