丸の内 MongoDB 勉強会 #22 に行ってきたので,内容走り書き.
前回 は前半のハンズオンについて書いたので,後半のセッションについて.
前回に続き,個人的な興味の濃淡で多少の記述の厚さに差があるのはご容赦ください.
勉強会詳細
https://mongonouchi.doorkeeper.jp/events/26940
ハンズオンと最近開催された MongoDB World のサマリーについて.特に MongoDB の特長の話やハンズオンについては,最新の v3.0 についての話あり.
Part2: MongoDB World 2015 レポート
鈴木逸平さん が以下のスライドを元に発表.
https://www.evernote.com/l/ABVCk0Cx0O9N64dDScAklBn9jwPvFl9lOyA
https://www.evernote.com/l/ABU3ZSvOqGtPZYFkIlBrupuesFtzkzuvK50
https://www.evernote.com/l/ABXCjbA83XdKn4nYJxlm_KJmlmx8k5ifoyk
話の要点をいくつか.
CEO 交代
MongoDB 2014 と MongoDB 2015 の一番の違いは Keynote を担当する CEO が変わったこと.新 CEO の Dev Ittycheria が MongoDB にジョインした背景には,会社を "Public" にする目論見があるのでは,という鈴木さんの見解.つまり IPO ということになるが,それは Oracle という牙城を崩すという話ではない.そもそも,MongoDB は RDBMS をすべてリプレイスする製品ではない.
MongoDB の市民権
DBEngines 誌の発表した「世界で使われているデータベースランキング」では MongoDB は 4 位にランクインしている.上位3データベースが 20 年以上の実績を誇る (Oracle, MySQL, MS SQL Server) ことを考慮すると,MongoDB の急成長ぶりが伺える.
鈴木さんが今回の Keynote から感じた印象のひとつは,MongoDB はスタートアップという立ち位置から安定的な成長へとシフトし始めているということだったそうだ. 同時期に開催された Chef, Docker, Spark などのカンファレンスでは,次々と新しい機能やプロダクトの発表をするド派手な印象を受けたのに対し,MongoDB は既に抱えている多くのユーザーの満足を高めてゆくに加えて,少しずつその規模を大きくしていけば良いという安定した成長をめざすようになっているとのこと.
MongoDB 3.0
WiredTiger
MongoDB 3.0 で追加された WiredTiger ストレージエンジンは,3.2 でデフォルトとする予定.WiredTiger は,IoT (Internet of Things) などの "Write Heavy" なユースケースに非常にマッチしている.この点に関しては,MongoDB がビジネスのトレンドに当てに来ている,MongoDB がビジネスを強く見据えている,という印象を受けた.
Strage Engine API
MongoDB 3.0 はストレージエンジンを統合できる Pluggable なアーキテクチャになっている.
Facebook は既に自社製の RocksDB を MongoDB に統合して利用している.
Automation
MongoDB 2.6 までのクラウド環境の MongoDB マネージャである MMS に加えて,オンプレミス環境でのバックアップや監視を担当する OpsManager をリリース.
MongoDB 3.2
夏後半にベータ版をリリースし,2015年末にリリースする予定.
以下の様な機能拡張を予定している.
スキーマ管理機能の強化
スキーマレスであることが MongoDB の魅力だが,自由すぎるがゆえの課題が幾つかあった.それを克服する新機能を導入する.
- PartialIndex: コレクションに属するすべてのドキュメントに対してインデックスを張ってしまうと無駄が多い.そのため,インデックス定義時にフィルターを定義して,そのフィルターに合致するドキュメントにのみインデックスを適用することができるようになる.
例えば,ユーザーのうちアクティブユーザーにのみインデックスを張る,といったユースケースが考えられる. - Validation: コレクションに挿入されるドキュメントはそれぞれスキーマレスであるが,そのスキーマに制限をかけることができるようになる.例えば「person コレクションに挿入されるドキュメントは age キーに対応する値が定義されており 21 以上であるべき」など.
- Scout: コレクションの状況を可視化させる機能.ドキュメントの保持する特定のキーの値のヒストグラムや,キーの有無を可視化.例えば gender キーの有無,その gender キーを持つドキュメント群について分布を棒グラフにする,など.
Aggregation Framework の強化
MongoDB には強力な Aggregation Framework を実装しているが,使える演算子が拡充される.中でも注目されるのが $lookup
演算子.これは SQL の JOIN
に近い動きをし,集約対象のコレクションに他のドキュメントの情報を外部キー参照で結合させる事ができる.例えば商品カタログのコレクションと注文のコレクションが存在し,注文内容を商品カタログの属性を用いて集約する,など.
BI Connector
Tableau などの BI ツールとのコラボレーションが容易になる,らしい.そのデモンストレーション
ただし,そのような API を公開する,という話よりも,「ほら,Tableau と簡単に結合できて難しい Aggregation Framework」もグラフィカルに操作できるよ,という宣伝色が強かった,らしい.(ここらへんがどのような話のテイストだったかはよくわからなかったので,後で自分で Keynote の映像を見て確認したい.)