いまさら聞けないMongoDBの基礎知識とインストール、CRUD操作の基本、モデリングツールMongooseの使い方MEANスタックで始めるWebアプリ開発入門(5)(1/3 ページ)

MEANスタックを用いたWebアプリの開発方法について紹介していく連載。今回は、ドキュメント指向データベース「MongoDB」の概要とセットアップの仕方、コマンドで基本的なCRUD操作をする方法、MongoDB用モデリングツール「Mongoose」の使い方と、Node.jsからMongooseモジュールでMongoDBを操作する方法などについて。

» 2015年07月14日 05時00分 公開
[中村修太クラスメソッド株式会社]

MEANスタックの「M」の部分MongoDB

「MEANスタックで始めるWebアプリ開発入門」のインデックス

「MEANスタックで始めるWebアプリ開発入門」連載目次

 前回の、『Node.jsのMVCフレームワーク「Express」における静的ファイル、ルーティング定義、セッション管理、エラー処理』では、サーバ側のMVCフレームワーク「Express」のいろいろな機能について紹介しました。

 今回は、MEANスタックの「M」の部分、MongoDBについての概要と、Node.jsからMongoDBへアクセスする方法について解説します。

 なお、本記事を見て実際にサンプルを動かしたい場合、以前の連載記事(第1回第2回)を見て環境を作成しておきましょう。

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

 第1回の記事「LAMPに代わる構成として注目のMEANスタックの基礎知識とインストール、ひな型作成」でも少し触れましたが、MEANスタックアプリにおけるデータベースといえば、MongoDBです。

MongoDB公式サイト

 MongoDBは、MySQLやOracleのようなRDB(Relational DataBase)とは違い、NoSQLに分類されるデータベースで、「ドキュメント指向データベース」と呼ばれています。

 MongoDBは「ドキュメント」と呼ばれるJSONのようなデータ形式を用いて、その集合を「コレクション」として扱います。そして、コレクションを扱うためにはクエリを発行して操作します。

MongoDBの特徴

 MongoDBの特徴の一つに、「固定スキーマを持たない」ということがあります。そのため、テーブルの結合処理は効率よく行うことはできませんが(不可能ではない)、CRUDのクエリは高速に動作します。設計の際には、その辺りを考慮して行う必要があるでしょう。

 また、MongoDBはスケーラビリティにも優れており、シャーディング機能によってクラスターの構築も可能です。

MongoDBにおけるシャーディング環境の一例(記事「開発者が知っておくべき、ドキュメント・データベースの基礎」より引用

RDBとの違い――MongoDBでトランザクションを実現するには

 RDBとの違いで少し注意しなければならないのは、トランザクションの機能がないということでしょうか。MongoDBでトランザクションを実現したい場合、次の二つの方法があります。

 一つ目はアトミックな操作を使用する方法です。MongoDBではドキュメントへのupdate操作のみ、アトミックが保証されるので、これを利用してトランザクションを実現します。

 二つ目はトランザクションの状態を自分で管理する方法です。ドキュメントの中にトランザクションの状態を格納して、手動でトランザクションの状態を管理します。

 MongoDBでトランザクションを実現するための詳細な解説は、下記リンクをご確認ください。

MongoDBのインストールと環境設定

 次に、MongoDBのセットアップをしましょう。

 MongoDB公式のダウンロードページから自分のプラットフォームに合ったファイルをダウンロードし、インストーラーの指示に従ってインストールします。

 Macの場合、Homebrewを使用してインストールすることも可能です。

% brew update
% brew install mongodb

 インストール時に指示されますが、ログイン時のMongoDB起動のため、デーモンの登録とサービスのロードを行います。

% ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
% launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

インストールの確認

 mongoコマンドでインストールできたか確認してみましょう。インストールしたMongoDBのバージョンが表示されればOKです。

% mongo -version
MongoDB shell version: 3.0.3

MongoDBを停止するには

 ちなみにMacの場合、MongoDBを停止する際には、psコマンドでプロセス番号を確認し、killコマンドで停止させます。

% ps ax | grep mongod
1234   ??  S     27:04.92 /usr/local/opt/mongodb・・・
% kill -9 1234

コンソールからコマンドでMongoDBにアクセスしてみる

 MongoDBにアクセスしてみましょう。MongoDBは、「MongoDB shell」という対話型コンソールを持っており、すぐに動きを確認できます。

% mongo
MongoDB shell version: 3.0.3
connecting to: test
>

 MongoDBでは内部にJavaScriptエンジンを持っているため、コンソールでJavaScriptを使うこともできます。

> for(var i = 0; i < 3 ; i++) { print("i=" + i); }
i=0
i=1
i=2

 詳細は、下記リンクを参照してください。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。