新しいwiredTigerストレージエンジンの始め方とその他のストレージエンジンについて
どうもどうも乙カレー様です。桑野です。
風邪です:(;゙゚'ω゚'):<寒い
MongoDB Advent Calendar 2014 - Qiitaの19日目です!
MongoDB2.8の目玉機能であるところのプラガブルなストレージエンジン、その中でも先日MongoDB社が買収したwiredTigerについては気になる所なのでとりあえず使い方メモまで書いてみますた。*1
wiredTigerとは
wiredTigerとはWiredTiger社で開発を進めていたデータストアで2.8ではMongoDBのストレージエンジンとして採用される予定だったのですが、そこから一転MongoDB社に買収されるという形になりました。今までのmmapv1(従来)形式のデータストアから置き換えになる方向なのではないかと思われます。ということでちょいとやってみようと。
試してみよう
現在MongoDB2.8のRC3まで出てますが、これであればwiredTigerは使えます。
$ cd /opt $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.8.0-rc3.tgz $ sudo tar zxvf mongodb-linux-x86_64-2.8.0-rc3.tgz $ mkdir -p /var/lib/mongodb/mmapv1 /var/lib/mongodb/wt $ chown -R mongodb. /var/lib/mongodb
YAML形式設定ファイル
そしたら次にMongoDBの設定。まずは普通に起動してみましょう。
YAML形式の設定ファイルが使えるようになったので勉強兼ねてそれで。(今までの設定ファイルも使えるよ)
# mongodb_mmapv1.conf storage: dbPath: "/var/lib/mongodb/mmapv1" engine: "mmapv1" journal: enabled: true systemLog: destination: file path: "/var/log/mongodb/mongodb_mmapv1.log" logAppend: true processManagement: fork: true
起動
/opt/mongodb-linux-x86_64-2.8.0-rc3/bin/mongod -f /etc/mongodb/mongod-mmapv1.yml
普通のもんごっすわw
wiredTiger 起動用の設定ファイル
次はいよいよwiredTigerです。設定ファイルを書きましょう。
# mongodb_wt.conf storage: dbPath: "/var/lib/mongodb/wt" engine: "wiredTiger" wiredTiger: blockCompressor: "none" systemLog: destination: file path: "/var/log/mongodb/mongodb_wt.log" logAppend: true storage: journal: enabled: true processManagement: fork: true
起動
/opt/mongodb-linux-x86_64-2.8.0-rc3/bin/mongod -f /etc/mongodb/mongod-wt.yml
設定項目も諸所用意されているので主要なオプション紹介します。(最新の状態は公式サイトまでm(_ _)m)
# mongodb_wt.conf storage: dbPath: "/var/lib/mongodb/wt" engine: "wiredTiger" wiredTiger: collectionConfig: blockCompressor: "snappy" engineConfig: cacheSizeGB: 2 checkpointDelaySecs: 60 statisticsLogDelaySecs: 5 journalCompressor: "snappy" directoryForIndexes: true systemLog: destination: file path: "/var/log/mongodb/mongodb_wt.log" logAppend: true storage: journal: enabled: true processManagement: fork: true
- blockCompressor: コレクションデータの圧縮 "none|snappy|zlib"
- cacheSizeGB: WiredTigerのキャッシュ量。デフォルトは1G or フィジカルメモリの半分
- checkpointDelaySecs: チェックポイントの間隔ジャーナル有効にしてないと最大この秒数のデータが失われる可能性がある。デフォルトは60Sec。
- statisticsLogDelaySecs: 統計ログの出力間隔、デフォルトは0(記録しない)
- journalCompressor: ジャーナルファイルの圧縮。 "none|snappy|zlib"
- directoryForIndexes: indexとcollectionをディレクトリで分けるようにする。デフォルトはfalse(無効)
ほかにどんなストレージエンジンがあるの?
見た感じこんなのがあるっぽい。
devnullストレージエンジン
insertとかしても何も記録されなかった。MySQLでいうBlackhole。
使い道、、、あるかなぁ、、、。
inMemory(inMemoryExperiment)ストレージエンジン
Experimentってあるので実験段階なんだろうけどメモリDBとして使うためのストレージエンジンぽい。Cappedで使っている用途はもはやこれでもいいんじゃないかと思わなくもない。
RocksDB(rocksExperiment)ストレージエンジン
RocksDBをバックエンドに持つストレージエンジン。使う時間なかったのでよくわからんw
今日はこんなところで勘弁してやらぁ(ください)
もうちょいやりたかったんですが、今日が終わりそうなのでとりあえずここまで。。。
( `)3')▃▃▃▅▆▇▉ヴェェェェェェエェエエェェェェェェエェエエェェヴェェェェェェエェエエェェェェェヴェェェェェェエェエエ
- 作者: Kyle Banker,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/14
- メディア: 大型本
- 購入: 5人 クリック: 55回
- この商品を含むブログ (8件) を見る
- 出版社/メーカー: モンゴ流
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る
*1:もうちょいやりたかったんですが、、、