概要(MongoDBとは)
- NoSQL(Not only SQL)の1種
- RDBMS界隈の初見者も理解しやすいデータ構造
- テーブルに相当する概念:コレクション
- レコードに相当する概念:ドキュメント
- find(SQLのselectに相当)、insert、update、remove(SQLのdeleteに相当)などでドキュメントを操作
- 大量のデータを管理&検索することに向いている
- ただし、MongoDBの苦手分野もある
- 「結合」が苦手
- トランザクションがない
- 複数のコレクションを(複雑なルールで)同時更新するのには向いてない
- JSONに似た形式でドキュメントを表現する
- RDBMSの「列」ではないので、コレクション内に持つドキュメントを柔軟に定義(変更)できる
Windowsで使う場合(2015/08/30時点)
インストール
-
Downloads - MongoDBからダウンロード
- WindowsのVERSION(例:Windows 64-bit 2008 R2+)を選択して、DOWNLOAD(MSI)をクリック
- インストーラーに頼る(例:mongodb-win32-x86_64-2008plus-ssl-3.0.6-signed.msi)
- インストール後、exeファイルの場所をPathに追加
- 例:C:\Program Files\MongoDB\Server\3.0\bin
- コマンドプロンプトで
mongod --version
が通ってればOK
起動方法
- データを保存する場所とログを保存する場所を確保する
- データの保存場所の例:D:\mongodb\data
- ログの保存場所の例:D:\mongodb\logs
- コマンドプロンプトでMongoDBを起動する
- 例:
mongod --dbpath D:\mongodb\data --logpath D:\mongodb\logs\mongodb.log
- 例:
終了方法
- 別のコマンドプロンプトから終了してみる
mongo
use admin
db.shutdownServer()
quit()
サービス登録
- 毎回コマンドプロンプトから起動するのが面倒な場合、Windowsサービスに登録もできる
- 管理者権限で
--install
オプションをつけてMongoDBを起動するだけ-
mongod --remove
でサービス削除ができる
-
- 管理者権限で
- 起動時に色々オプション渡すのが面倒な場合、設定ファイル(confファイル)を用意する
- 管理者権限で
mongod --install --config D:\mongodb\mongodb.conf
のようにコマンドを打てばOK - confファイルはUTF-8で保存する
- SJISだとサービス名とかが文字化けしちゃう
- 以下は設定例
- 詳細は公式サイトのドキュメントで確認できる
- 管理者権限で
storage:
dbPath: D:\mongodb\data
engine: wiredTiger
journal:
enabled: true
systemLog:
destination: file
path: D:\mongodb\logs\mongodb.log
net:
bindIp: 127.0.0.1
processManagement:
windowsService:
serviceName: MongoDB
displayName: MongoDB
description: MongoDBのサービス
# serviceUser: <string>
# servicePassword: <string>
クライアント
コマンドプロンプトから操作できるけど、色々なクライアントツールがあるみたい。
とりあえずRobomongoというのを使ってみる。
困ったこと(というか注意すること)
MongoDB3.0からストレージエンジンが2種類になったらしい。新エンジンの方が速いらしい。
- mmapv1(従来エンジン:デフォルト)
- wiredTiger(新エンジン)
ただし、新エンジンのwiredTigerを使う場合、従来エンジンmmapv1で作成したDBデータとは互換性がないみたい。
起動時エラーの例:exception in initAndListen: 28574 Cannot start server. Detected data files in D:\mongodb\data created by storage engine 'mmapv1'. The configured storage engine is 'wiredTiger'., terminating
参考になりそうなサイト
外部サイト(概要と運用方法について)
初心者向けMongoDBのキホン!
MongoDB〜その性質と利用場面〜