MongoDB とは

オープンソースのドキュメント指向データベース’MongoDB’について学習してみます。


MongoDB とは

‘MongoDB’とは、オープンソースで公開されているドキュメント指向データベースです。
現時点で安定版のバージョンは「3.2.4」です。
2016/4/28に3.2.6が公開されています。
公式サイト
MongoDB for GIANT Ideas | MongoDB

ドキュメント指向データベース とは

MongoDBを始めとする’ドキュメント指向データベース’は、1つの’ドキュメント‘が1件分のデータとなり、その集合体で構成されるデータベースのことを指します。
このドキュメントの形式としては’JSONオブジェクト’が用いられることが多いですが、XMLなどが用いられる場合もあります。いずれの形式にも共通する特徴として「単純な表形式で表現しにくいデータの格納に適している」ということです。


リレーショナルデータベースとの違い

現状、データベースの代表格と言えば’Oracle’、’Microsoft SQL Server’、’MySQL’などの「リレーショナルデータベース」(RDB)が挙げられます。
このRDBは、

  • データはのレコード(行)とフィールド(列)の集合体である表形式(テーブル)で構成される
  • テーブル同士を特定のキーによってリレーション(相互に連結)し、1つのデータベースを構成する

という大きな特徴があります。

決まった構造の(表形式で表せる)データを格納するには、RDBは非常に適しています。ところが、一定でない形式のデータの格納には弱く、「必要なすべてのフィールドを事前に定義しておく」「複雑なリレーションを作成する」などの対処が必要になります。
一方ドキュメント指向データベースでは、事前にテーブル構成を定義しておく必要もなく、どんな構造のデータでも格納できます。
また、両者の思想の違いとして、RDBはデータの整合性を重視するのに対し、ドキュメント指向データベースでは高速かつ大量のデータを効率よく処理できることを重視しています。


MongoDB のデータモデル

さて、MongoDBでも、ドキュメントのデータモデルとして’JSON'(正確には’BSON’と呼ばれるバイナリ式のJSON)オブジェクトが採用されています。
すべてのドキュメントは’コレクション‘と呼ばれる器に格納されます。(RDBでいう「テーブル」に相当します。)また、コレクションの集合体をデータベースと呼びます。
また、RDBでは’SQL‘と呼ばれる問い合わせ言語を用いてデータを操作しますが、MongoDBでは専用のクエリ言語を用いて行います。
ただし、JavaScriptでJSONオブジェクトや連想配列を操作する際とほぼ同じイメージで記述できるので、プログラマーにはとっつきやすい記法になっています。