MongoDB Advent Calendar 2013 第1日目の投稿です。
MongoDB FAQにあったMongoDB 2.8についての概要と、MongoDB 2.8rcリリースノートの翻訳をしました。
追記: MongoDB 2.8 は 3.0 になってリリースされました。
まずはまとめから。
MongoDB 3.0 ( 2.8 ) のトピックを3行で
- 新しいストレージエンジンWiredTigerが選択できるようになったよ
- WiredTigerにはドキュメントレベルロックとデータ圧縮が実装されたよ。
-
explain()
がパワーアップしたよ。
あと、2.8と直接関係は無いですが、MMSが大幅に機能追加されます。
MongoDBダウンロードページの右半分に大きくMMSが紹介されるようになっていますし、これから注力されていくことが予想されます。
MongoDB 3.0 ( 2.8 ) には何が含まれますか?
原文: What will be included in the MongoDB 2.8 release?
MongoDB 2.8のリリースでは、 ドキュメントレベルロック (すなわち、よりきめ細やかな並行性)と、 MMSの自動化機能 という2つの機能にフォーカスしています。MMSの自動化では、MongoDBへのユーザー作成、アップグレードや任意サイズの容量の追加をワンクリックで実施可能となります。MongoDB 2.8での追加機能についてより知りたい場合は、Co-Founder兼CTOであるEliot Horowitz'sのMongoDB Worldでの基調講演を見てください。また、長期のロードマップについて知りたい場合は、Eliotのロードマップについての講演を見てください。
MongoDB 2.8rcリリースノート
原文: Development Release Notes for MongoDB 2.8.0 Release Candidates
主な変更
ストレージエンジン: 並行性の改善, ドキュメントレベルロックとデータ圧縮
MongoDB 2.8はMMAPv1とWiredTigerの2つのストレージエンジンをサポートします。MMAPv1は過去のバージョンで使用されてきたストレージエンジンです。2.8のデフォルトはMMAPv1を使用します。
2.8のMMAPv1は コレクションレベルロック をデフォルトでサポートします。WiredTigerストレージエンジンはMongoDB 2.8に、 ドキュメントレベルロック と データ圧縮 を提供します。WiredTigerは全てのMongoDBの機能をサポートし、MMAPv1で運用されているレプリカセットやシャードクラスターと相互運用性がありますが、ディスク上でのストレージフォーマットの変更が必要です。現状のデータをWiredTiger用にコンバートするために、以下の2つの手順のどちらかが必要です。
- ローリング方式でのレプリカセットのアップグレード。参照: Upgrade MongoDB to 2.8 — MongoDB Manual 2.6.4 または、Upgrade MongoDB to 2.8 — MongoDB Manual 2.6.4
- mongodumpとmongorestoreを使ったデータインポート
WiredTigerを有効にしてMongoDBを起動させるには、以下の手順を実施してください。
mongod --storageEngine wiredTiger
訳注: ストレージエンジンについては玉川さんのスライド 丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみましたが参考になります
レプリカセットの最大参加メンバーの増加
MongoDBのレプリカセットは最大50インスタンスまでメンバーを追加できるようになりました。レプリカセットのvotingメンバーの最大は7インスタンスまでで、これまでのリリースと同様です。
訳注: これまでのレプリカセットの最大メンバー数は12インスタンスでした。
セキュリティの改善
SCRAM-SHA-1認証の追加
MongoDB 2.8には新しくSCRAM-SHA-1認証が追加されました。
Localhost Exceptionの変更
MongoDBにアクセスするためLocalhost Exceptionを使用する場合、オペレーションは制限されadminデータベースへのユーザー作成のみが可能となります。
クエリーエンジンの改善
クエリー分析の改善
MongoDB 2.8には新しいクエリー分析システムがexplain()
で提供されます。これは全てのMongoDB クエリーオペレーションで使用できます。(例: db.collection.find(), db.collection.remove(), db.collection.update())
explain()
の出力で、queryPlanner, executionStatsやserverInfoなどのフィールドが、クエリー実行とワークロードの新しい情報として提供されます。
シャードされたコレクションへ実行可能
シャードされたコレクションに対してexplain()
が実行可能になりました。
アップグレードの手順
Upgrade MongoDB to 2.8にアップグレード手順があります。
ダウンロード
MongoDB 2.8 release candidatesはダウンロードページからダウンロードしてください。
リリーススケジュール
- 2.8.0-rc2 2014/12/04
- 2.8.0-rc3 2014/12/17
以上、MongoDB Advent Calendar 第1日目でした。