冬休みというのは暇ですね。こーいうときに新しい技術に触るのが正しい技術者でしょう。

Introduction

NoSQL の説明は、Wikipediaによると、

NoSQL系データベース管理システムには、データの格納および取得が高度に最適化されているものが多い。その最適化のために機能性を最小限にしているものもある。「値」およびそれを取得するための「キー」だけを格納できるKey-Value型データベースは、その最たる例である。

とあります。
ぶっちゃけると、高速性、を目的としていると私は理解します。あと柔軟。
RDBMS は使いにくいとは言いませんが、テーブル間の制約やデータ整合性に重きを置いているためパフォーマンスが出にくいのでしょう。
そこまで複雑なデータベースを必要としないなら、NoSQL で十分です。

NoSQL は色々ありますが、

といったところでしょう。もっとあります。詳しくはWikiで。
今回はMongoDBを使ってみます。

MongoDBの特徴

MongoDBはサービスとして動作し、そこに対して各種要求を行うタイプです。
MySQL とかと同じです。SQLite みたいな、データベースがファイルとして一つあって、それで完結するタイプではありません。

またライセンス形態が独特です。Affero General Public License (以下AGPL) です。

  • コピーレフト (GPLと同じ)
  • サービスとして動作している、AGPL のソフトウェアに接続しているソフトウェアにもソースコードの公開が義務づけられている

がざっくりとした特徴です。
ですが、開発元がクライアントからの接続のためのドライバ (ソフトウェア) を公開しているので、それを経由すれば問題ない、という感じです。(2次感染はしない、という見解) でも、Free Software Foundation は公式見解を出していません。

これについて、詳しいのは http://test.mongodb.jp/mongo/licence です。

Explanation

インストール

何はともあれ、インストールです。
MongoDB はここからダウンロードできます。

  • Windows 64-bit 2008R2+
  • Windows 64-bit 2008R2+ legacy
  • Windows 64-bit legacy
  • Windows 32-bit

がありますが、一番上だけ、msi形式のみ。他はzipもあります。
ここは一番上にします。
他を選ぶと但し書きが出ます。

Windows 64-bit 2008R2+ legacy

This distribution does not include SSL encryption.

訳: このディストリビューション (頒布物) は SSL 暗号化 を含んでいません。

Windows 64-bit legacy

The 64-bit legacy build does not include SSL encryption and lacks newer features of Windows that enhance performance. Use this build for Windows Server 2003, 2008, or Windows Vista

訳: 64bitのレガシービルドは SSL 暗号化 を含んでいません。そして、パフォーマンスの改善するWindowsのより新しい機能もありません。Windows Server 2003、2008、Windows Vistaでこのビルドを使用します。

Windows 32-bit

32-bit builds are limited to around 2GB of data. In general you should use the 64 bit builds. See here for more information. 32-bit builds are deprecated as of 3.2, and will no longer be produced for future releases.

訳:32bitのビルドにはデータが2GBまでという制限があります。通常は64bitビルドを使用するべきです。詳しい情報はこちらを。32bitビルドは3.2で廃止予定で、将来のリリースにおいて作成されることはありません。

msiなのでさくっとインストールします。
特に問題なく終わります。
おわらなかったらGoogle先生に助けを求めるか、公式サイトのコミュニティに質問してください。
ちなみに私はWindows10 64bitにインストールしましたが、問題がありませんでした。まる。

As a Service

いちいち、起動するのも面倒なので、サービスとして動かしてみましょう。
各種設定を行います。正直、インストーラで指定できるようにして欲しかった。

公式ページに説明があります。
全部訳していられないので、一部だけ抜き出して説明します。

1. 概要

のっけから注意書きです。

IMPORTANT: If you are running any edition of Windows Server 2008 R2 or Windows 7, please install a hotfix to resolve an issue with memory mapped files on Windows.

訳: 重要: もし、Windows Server 2008R2、Windows7 で動かすのだったら、Hotfixをインストールしてね。

というわけで、必要なら当ててください。私はWindows10なので当ててません。

2. インストール

You may specify an installation directory if you choose the “Custom” installation option. NOTE: These instructions assume that you have installed MongoDB to C:\mongodb.

訳: “Custom” インストールオプションを選択して、インストール先を指定したかもしれません。
ノート: ここの説明は、インストール先が”C:\mongodb” だと仮定しています。

こんなところにインストールする人いるんでしょうか。Programs Filesの下でいいじゃんと思いますが、きっとパス文字列に空白を含むのがいやなんでしょう。
う、頭が…

3. 設定ファイル作成

まず、データベースの保存先とログの出力先フォルダを作ります。
インストール先が、C:\Program Files\MongoDB、保存先はそれぞれ、D:\MongoDB\StorageD:\MongoDB\Logs だとします。
フォルダは作成済みだとします。

次に、設定ファイルを作ります。mongod.cfg とします。UTF8で作っておけば安心かと。D:\MongoDB\mongod.cfg とします。
内容は、

1
2
3
4
5
systemLog:
destination: file
path: D:\MongoDB\Logs\mongod.log
storage:
dbPath: D:\MongoDB\Storage

とします。ログファイル名の部分は自由かな。
詳しい設定はConfiguration File Optionsです。
ログのローリングとかできる感じです。

4. 設定ファイル読み込み

IMPORTANT Run all of the following commands in Command Prompt with “Administrative Privileges”.

訳: 重要: “管理者として実行”を指定してコマンドプロンプトを起動してください なので指示に従ってください。

補足
複数のインスタンスでサービスを動かす場合は、この章を飛ばしてください。

MongoDBのインストール先に移動し、次のコマンドをたたきます。

1
mongod.exe --config "D:\MongoDB\mongd.cfg" --install

エラーがなければ、すぐに終了します。
mongod.exemongo.exe を間違えないでください。

間違えると、

1
2
Error parsing command line: unrecognised option '--config'
try 'mongo.exe --help' for more information

って親切に教えてくれます(震え声) これで、MongoDBがサービスとして登録されます。

5. マルチインスタンスで動かしたいです

という方も安心。

If needed, you can install services for multiple instances of mongod.exe or mongos.exe. Install each service with a unique –serviceName and –serviceDisplayName. Use multiple instances only when sufficient system resources exist and your system design requires it.

訳: 必要なら、mongod.exeまたはmongos.exeの複数インスタンスをサービスとしてインストールできます。各サービスのインストール時に、ユニークな –serviceName と –serviceDisplayName をつけてください。複数のインスタンスは十分な権限とシステムリソースがあるとき、システム設計でそれが必要なときだけ使うことができます。

なので、サービス名を MongoDB1、表示名を MongoDB Main にしたいなら、

1
mongod.exe --config "D:\MongoDB\mongd.cfg" --install --serviceName "MongoDB1" --serviceDisplayName "MongoDB Main"

するとこんなメッセージでます。

1
2015-12-29T17:25:43.489+0900 I CONTROL  [main] log file "D:\MongoDB\Logs\mongod.log" exists; moved to "D:\MongoDB\Logs\mongod.log.2015-12-29T08-25-43".

でこうなります。

複数インスタンス

で、当然ですが、複数のインスタンスを作って、同じ設定ファイルを読み込むとたぶん悲劇でしょう。
特に公式ページに何も書いてありませんでしたが。

以上。

Conclusion

長くなりましたが、インストールまでは終了です。
次は実際につないでみます。