MongoDBは、SQLデータベースに近いNoSQLです。ドキュメントデータベース、キー・バリュー型データストア(key-valueストア)、リレーショナルデータベース(RDB)の良いとこ取りを目指しています。使い勝手もRDBに近いといえます。

MongoDBのデータベース構造

図1●MongoDBの用語
[画像のクリックで拡大表示]

 MongoDBは、データベース、コレクション、ドキュメントという階層構造になっています(図1)。コレクションはRDBでは、テーブルに相当するものです。

 RDBと違い、MongoDBではスキーマが不要です。RDBではテーブルの各行(レコード)が、どのようなデータをどの順に持っているかを最初に定義する必要があります。また、各レコードはスキーマで定義された共通の構造を持っています。

 ところが、MongoDBのコレクションはスキーマレスであり、レコードに相当するドキュメントというデータを保持していますが、一つひとつのドキュメントは特に共通の構造を持つ必要がありません。

図2●MongoDBはスキーマレス
[画像のクリックで拡大表示]

 このため、データベースに登録するデータの構成が変化しても、柔軟に対応できます(図2)。

 ここではMongoDBをUbuntu 9.10にインストールして使ってみます。インストールに先立ち、Ubuntuを「$ sudoapt-get update」のように最新に更新しておいてください。

 MongoDBのインストールは難しくありません。MongoDB公式サイトのダウンロードページでバイナリをダウンロードできます。

 上記のサイトにアクセスして、Linuxの「download」をクリックしてMongoDBのバイナリファイルをダウンロード、展開します。

$ tar mongodb-linux-i686-1.2.4.
tgz
$ cd mongodb-linux-i686-1.2.4/
bin

 「mongod」というのがMongoDBデータベースの本体です。このコマンドの引数として、データベースの格納場所へのパスと、mongodが接続を受け付けるポート番号を指定します。

$ sudo mkdir /var/db
$ sudo mkdir /var/db/mongo
とデータベース格納場所を作っておき、次のように起動します。
$ sudo ./mongod --dbpath /var/db/mongo

 正常に起動したら「waiting for connections on port 27017」とメッセージが出ます(写真1)。

写真1●MongoDBの起動メッセージ
写真1●MongoDBの起動メッセージ

mongoコマンドの使い方

 MongoDBを簡単に操作するためには、クライアント側のmongoコマンドを使います。MySQLサーバーを操作する「mysqlコマンド」と同じようなものです。

 データベースサーバーのポート番号を明示的に指定した場合にはmongoコマンドにも--portオプションを指定します。

 別の端末から、MongoDBを展開したディレクトリ内のbinディレクトリ内に入り、

$ cd mongodb-linux-i686-1.2.4/bin
次のようにmongoを起動します。

$ ./mongo
MongoDB shell version: 1.3.1
url: test
connecting to: test
type "exit" to exit
type "help" for help
>

 これでmongoコマンドがmongoDBに接続できました。「>」というのがmongoコマンドのプロンプトです。ここから抜けるには、「exit」を入力します。

 mongoコマンドは対話的にデータベースを操作できるので、学習に大変役立ちます。データベースをちょっと除いたり、修正したりするのにとても便利です。

 mongoコマンドは行編集機能を持たないので、行編集機能を提供する「rlwrap」コマンドをインストールして使えばもっと便利になります。それには、

> exit
bye
$ sudo apt-get install rlwrap
# rlwrap mongo

のように実行します。

この先は会員の登録が必要です。今なら有料会員(月額プラン)は12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら