冬休みというのは暇ですね。こーいうときに新しい技術に触るのが正しい技術者でしょう。
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\Storage、D:\MongoDB\Logs だとします。
フォルダは作成済みだとします。
次に、設定ファイルを作ります。mongod.cfg とします。UTF8で作っておけば安心かと。D:\MongoDB\mongod.cfg とします。
内容は、
1 | systemLog: |
とします。ログファイル名の部分は自由かな。
詳しい設定は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.exe と mongo.exe を間違えないでください。
間違えると、
1 | Error parsing command line: unrecognised option '--config' |
って親切に教えてくれます(震え声) これで、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
長くなりましたが、インストールまでは終了です。
次は実際につないでみます。