MongoDB - Masanoriのメモ帳

MongoDB


MongoDB

NoSQLなドキュメント指向データベース MongoDB (v2.x〜)についてのメモです。
ゆるふわと言わたりしますが、サッと使うのには便利。まともに実用するには他と同様、相応の知見と工夫が必要な印象です。(良い意味で) 少し枯れ始めてきたかもしれません。
開発元は"10gen"でしたが、わりと最近、"MongoDB"という社名になりました

 特徴

RDB用語との対応

MongoDB RDB
コレクション テーブル
ドキュメント

Query

Index

http://www.mongodb.org/pages/viewpage.action?pageId=5800049
Indexを張らない場合、データ増加に伴うfindの性能劣化が激しくなる。
なるべくIndexを張っておくこと。また、複合Indexも生成可能。
但し、読み込みよりも書き込みのほうが多いコレクションには、Indexを張らないほうがいい。

 シェル: Indexの生成

db.foo.ensureIndex({hoge:1});

 シェル: クエリの実行計画

db.foo.find(bar).explain()で確認可能。

db.foo.find({ hoge:"piyo"}).explain();

http://www.slideshare.net/matsuou1/20110514-mongo-db

cappedコレクション

固定されたサイズのコレクション。ロギングなどに最適。
http://www.mongodb.org/pages/viewpage.action?pageId=5079212
cappedコレクションには、Indexを張らないほうがいい。

Journal (ジャーナリング、先行書き込みログ)

v1.8から導入された機能。v1.9.2からデフォルトで有効となった。
オペレーションを行う前に、ジャーナルファイルにオペレーションログを先行書き込みする。

単体で開発に使っている場合などは、無効化しても構わないであろう。

$ mongod --nojournal

(異常発生した場合は、今までどおり repair するか、もしくは、不要ならばデータを消去すれば良い。)

参照: MongoDB journal casebook
参照: MongoDBの新機能:ジャーナリングについて詳しく

HTTP Admin UI

WebブラウザからMongoDBの状態を確認できる。
mongodの起動時に--restオプション付きで実行する必要がある。

mongod --port 27017 --rest

ポートは、mongodのポート + 1000 (即ちデフォルトでは 28017)となる。

また、yumなどでインストールした場合は、
/etc/mongodb.conf に 以下を追加する

rest = true

(参照)

尚、SELinuxにより実行がブロックされる場合は

semanage port -a -t http_port_t -p tcp 28017
grep mongod /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

のようにして許可する。

Mongos router

複数のmongodプロセスをまとめるためのルータ
http://www.mongodb.org/pages/viewpage.action?pageId=5800002
http://d.hatena.ne.jp/matsukaz/20110417/1303057728

Replica set (冗長構成)

Replica setは、Replica pairsよりさらに柔軟に構成が可能。

3台以上で構成できる。(slaveとarbiterを物理的な1台で兼用も一応可能)
arbiterは、障害発生時のmaster昇格決定をサポートするのみの役割。
master/slaveのみの2台構成となると正常に動作しない。(参照)

http://d.hatena.ne.jp/ryopeko/20101005/1286262922
http://sssslide.com/www.slideshare.net/naverjapan/mongodb-9422893
http://doryokujin.hatenablog.jp/entry/20101102/1288651712

 SlaveOK

slaveに対する参照を可能にする。(masterに対してはinsert/update/deleteのみを行う運用)

Replica pairs (冗長構成 (旧))

2台または3台で構成できる。
http://www.mongodb.org/display/DOCSJP/Replica+Pairs

arbiterは、障害発生時のmaster昇格決定をサポートするのみの役割。
--arbiterオプションにより、arbiterなしでの運用も可能。(即ち、ネットワーク分断時には両方がmasterとなる。)

Sharding (負荷分散)

http://sssslide.com/www.slideshare.net/doryokujin/mongodb-9208855

Tips

事例




スポンサード リンク



メニュー


未整理

Linux

プログラミングx

Android

サービス

製品

執筆中


筆者のサイト


スポンサード リンク