(2016/1/11追記)
このブログはMongoDB 3.2がリリースされる前に公表された情報であり、3.2の正式なリリース情報ではありません。MongoDB3.2の正式なリリース情報はMongoDB3.2リリースノートの説明を見てください。
はじめに
MongoDB 3.2のアナウンスが出ましたので、ざっくり説明します。
基本的にはアナウンスを元に、足りない部分はリリースノート(RC版)で補足しています。
アナウンスの要約
ドキュメントバリデーション
ドキュメントの中身にバリデーション(キー名や値のチェック)がかけられます。
例えば、{ age : { $gte : 0, $lte : 150 } }
とすると、ageが0~15の間の数値であるかチェックできるといった感じです。
部分的インデックス
ドキュメントの中のある値によって、インデックスに含めるかどうかを分けれるようになります。
例えば、ユーザドキュメントの中にアクティブ化非アクティブ化のフラグがあり、アクティブなユーザしか検索しない要件であれば、非アクティブのフラグのデータはインデックスに含めないことができ、これによりメモリを効率的に利用できます。
ストレージエンジンの追加
今まではMMAPとWiredTigerだけでしたが、新たにインメモリのストレージエンジンと、暗号化できるストレージが追加されます。
ただし、暗号化ストレージは有償のEnterprise版のみのようです。
BIツールとのコネクタ
BIツールとのコネクタがつくようです。予想するにおそらくTableauでしょう。
configサーバがレプリカセットに
今まではconfigサーバはmongod 3台で2PCで更新でしたが、今後は非推奨になり、代わりにレプリカセットでconfigを構築するようです。
JavascriptのエンジンがまたSpidermonkeyに
今はJavascriptのエンジンはV8ですが、Spidermonkeyになるようです。
たしか2.4でSpidermonkeyからV8にしているので、戻ったことになります。
mongodumpとmongorestoreが圧縮&ストリーム転送対応
mongodumpとmongorestoreが圧縮に対応します。さらに、リモートのmongodに対してdumpしたデータをストリームで転送しrestoreすることができるようになります。
アグリゲーションフレームワークの改良
アグリゲーションフレームワークに沢山のオペレータが追加されました。その中から一つだけ紹介すると、$lookup
というパイプラインのステージが導入されたことです。これはSQLのLEFT OUTER JOINのようなもので、他のコレクションから紐づくデータを結合することができます。
全文検索の改善
全文検索が英語以外に対応しました!が、残念ながら日本語は対応していません。
追加された言語はアラビア語、ペルシャ語、ウルドゥー語、中国語です。
ほかにもいくつか改善があるようです。
新しいCRUDのAPI
今までのCRUDは、一回のクエリで更新されるドキュメントの数が一つだったり複数だったりでわかりにくかったので、新しいAPIが追加されました。
例えば、update()
であれば、一つを更新するupdateOne()
や複数を更新するupdateMany()
を代用できます。
他にもfindAndModify()
もわかりにくかったんで、更新と置換と削除の3つの代用APIができてます。
Ops Manager(旧MMS)の改善
ファイルシステムのバックアップ、クエリのプロファイラ、インデックスの示唆、そしてレプリカ全体のインデックスをローリングアップデートできるようになったそうです。
さいごに
リリースは2015年内を予定しているそうです