Mac OS X で MongoDB を動かす
MongoDB は、いわゆる NoSQL データベースの一つです。
公式サイトの文言をそのまま信じるなら、
- ドキュメント指向ストレージで
- インデックスをサポートしていて
- レプリケーションができて高可用性に富んでいて
- 自動データ分割してくれて
- 多彩な検索クエリが使えて
- 更新がアトミックで速くて
- Map/Reduce も使えたりしちゃったりして
- GridFS っていう何でもつっこめるファイルシステムを使っていて
- 商用サポートもある
といった特徴を持つプロダクトです。
私は、自動分散と、単純なKVSにはない豊富な検索クエリに惹かれて、使ってみようかと思いました。インデックスがあるのもいいですね! というか、MongoHQ ですよ! Amazon EC2 のサーバーとつなげられるらしい、自動スケールアウト管理不要サービスです。最初無料からスタートして安いんですよねー。これが決め手です。
では、インストールしましょうか。幸いなことに macports にありました。楽ちんですね。
$ sudo port install mongodb
今コマンド実行した?早速実行した?はい、君、終了〜。なんと、依存ライブラリ boost のビルドに6時間、mongodb のビルドに1時間かかってしまうのです!(MacBook (Early 2008) 調べ) 会社の人は退社間際、自宅の人は出社前・寝る前にやるのが吉ですね。
起動に必要なディレクトリとファイルを作っておきましょう。
$ sudo mkdir /var/lib/mongodb $ sudo touch /var/log/mongodb.log
ディレクトリパスはお好みで。macports なので /opt/local/ を頭につけたい人もいるかもしれませんね。
起動は、
$ /opt/local/bin/mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb.log
ログを追記式にしたいときは、--logappend を加えて下さい。付けないと、起動毎にログがリフレッシュします。私は、開発環境なので、ディスク占有しない方がいいかなー、と思って外しました。
停止は、
$ kill -2 (プロセスID) または、 $ kill -15 (プロセスID)
です。
マニュアルによると、SIGINT(2) か SIGTERM(15) で停止だそうです。CTRL-C とか kill -9 とかは厳禁ですよ!
Mac 起動時に自動でスタートして欲しいですよね? OS X なので launchd/launchctl で起動・停止するように設定します。
/Library/LaunchDaemons/org.mongodb.mongod.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.mongodb.mongod</string> <key>RunAtLoad</key> <true/> <key>ProgramArguments</key> <array> <string>/opt/local/bin/mongod</string> <string>--dbpath</string> <string>/var/lib/mongodb</string> <string>--logpath</string> <string>/var/log/mongodb.log</string> </array> </dict> </plist>
launchd/launchctl は停止時は SIGTERM を送るそうなので安心ですね。
オーナーやパーミッションも変更しておきましょう。
$ sudo chown root:wheel org.mongodb.mongod.plist $ sudo chmod 644 org.mongodb.mongod.plist $ ls -l org.mongodb.mongod.plist -rw-r--r-- 1 root wheel 496 6 2 04:30 org.mongodb.mongod.plist
これで(RunAtLoad が true なので)次回Macの起動時に自動で起動されるはずです。
手動で起動・停止するのは、
$ sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist $ sudo launchctl unload /Library/LaunchDaemons/org.mongodb.mongod.plist
です。plist はフルパスじゃないといけませんよ。
うまく起動したら、チュートリアルを見ながら、クライアントインターフェイスで遊んでみましょう。
$ mongo
それでは、今日はここまで!
続き書きました → ハンズオンで分かる MongoDB チュートリアル