MongoDB Release History
MongoDB勉強会 in 2017 の発表資料です。
MongoDBのリリースヒストリーを振り返って、1.0からリリース予定の3.6までを紹介します。
バージョニングルール
- x.x.x: メジャー.マイナー.リビジョン
- マイナーが偶数だと安定版、奇数だと開発版
Example
- 2.0.0 : Stable release. 安定版リリース。
- 2.0.1 : Revision. リビジョン。
- 2.1.0 : Development release for testing only. 開発版リリース。
- 2.2.0 : Stable release. 安定版リリース。2.1.xで開発での開発の成果物。
Release History
Version | Release Date | Topics | 世界の動向 |
---|---|---|---|
first commit | 2007/10/20 | 2000行のコードがコミットされる | 初代iPhoneが発表される |
v1.0 | 2009/08/27 | レプリケーション, Capped Collection | |
v1.2 | 2009/12/10 | Indexの改善, JSON PrettyPrinter, Map/Reduce, fsync リリースノート | |
v1.4 | 2010/03/25 | シャーディング alpha 3, クエリ言語追加( $elemMatch, $unset 他 ), GeoIndex登場, リリースノート | NoSQLがバズワード化 |
v1.6 | 2010/08/25 | シャーディング登場, レプリカセット登場, GridFS, リリースノート | MongoDB JP立ち上がる |
v1.8 | 2011/03/16 | ジャーナリングのサポート, レプリカセットの強化, GeoIndexが球体対応, Indexに Sparse, Covered 追加, リリースノート | |
v2.0 | 2011/09/12 | 並列処理性の改善, レプリカセット・シャーディングの改善、シャーディングでの認証機能, タグレプリカ機能, Data-Center Awareness, リリースノート | データセンター型へ, MMSリリース, CAのMongoDB記事 |
v2.2 | 2012/08/29 | DB Level Lock, Aggregation Framework, タグシャーディング, TTL Collections, リリースノート | 丸の内MongoDB勉強会始まる, gihyo.jpで「MongoDBでゆるふわDB体験」連載開始, MongoDB Casual Talks, MongoDB + fluentd |
v2.4 | 2013/03/19 | 全文検索, ロール, JavaScript EngineがV8に, GeoJSON, ハッシュドシャードキー, リリースノート | 2013/08/27 10genがMongoDB, Inc. に社名変更, 10月に$150Mの資金調達 |
v2.6 | 2014/04/08 | Aggregation Pipelineの強化, 書き込み処理APIを根本変更, カスタムロール, セキュリティ機能, リリースノート | エンタープライズユースへ, fluentd + MongoDB + Elasticsearch + Kibana でログの可視化, 2014/06/24 MongoDB World 2014 (初のMongoDB World) |
v3.0 | 2015/03/03 | Pluggable Strage Engine ( WiredTiger, MMAPv1 ), Collection Level Lock, Document Level Lock ( Only WiredTiger ), リリースノート | MMS強化, 2015年1月に$80Mを調達 |
v3.2 | 2015/12/08 | Document Validation, Partial Index, $lookup ( Aggregationでjoin ), ストレージエンジンの追加, JavaScript EngineがSpidermonkeyに, 全文検索にアラビア語、中国語、ペルシャ語、ウルドゥー語が追加, CRUD API追加, リリースノート | BI Connector, Ops Manager (旧MMS) |
v3.4 | 2016/11/29 | Aggregation ( $graphLookup, $facet ) , View, Sort by collation, Apache Spark Connector, リリースノート | Atlas, Compass, Multi-Datacenter Deployment |
v3.6 upcoming | 2017/xx/xx | Aggregationの改善, 配列を扱いやすくする機能改善 リリースノート |
MongoDB 3.0
MongoDB 3.0 Announcement | MongoDB Blog | MongoDB
Plugabble Storage Engine
- MMAPv1とWiredTigerをリリース
Lock Level
- MMAPv1はCollection Level Lock
- WiredTigerはDocument Level Lock
MongoDB 3.2
MongoDB 3.2 Announcement | MongoDB Blog | MongoDB
Document Validation
db.createCollection( "contacts",
{ validator: { $or:
[
{ phone: { $type: "string" } },
{ email: { $regex: /@mongodb\.com$/ } },
{ status: { $in: [ "Unknown", "Incomplete" ] } }
]
}
} )
Patial Indexes
partialFilterでフィルタリングしたDocumentのみをIndexing可能に。
$lookup
Aggregationでjoinっぽいことができる。
New CRUD API
xxxOne()とxxxMany()になって数が増えた。deleteMany(), deleteOne()とか。
MongoDB 3.4
Graph Computing
$graphLookup: コレクションに対して再帰的に検索を行います。
Faceted Navigation
$facet: サブクエリのパイプライン向けオペレータ。入力されたドキュメントに対して複数のパイプライン処理を行い、これらのパイプラインの結果を含んだドキュメントを出力します。読み方はファセット。
Databese Views
読み取り専用のいわゆるView。
Decimal data type
decimal128フォーマットのサポート。34桁までの仮数および-6143から+6144までの指数の範囲をサポートします。
MongoDB Atlas
MongoDB as a Serviceなクラウドサービス。
MongoDB Compass
MongoDBのGUIツール。GUIでCRUDできる。
MongoDB 3.6 ( upcoming )
Release Notes for MongoDB 3.6 (Development Series 3.5.x) — MongoDB Manual 3.6
Security Enhancements
- MongoDB 3.6からバイナリ配布のMongoDBのmongodとmongosは、デフォルトではlocalhostをbindするようになりました。localhost以外からアクセスする場合は、
--bind_ip
で指定してください。
Aggregation
- New Aggregation Operators
- $arrayToObject : 配列をいい感じにObjectにしてくれる。
- $objectToArray
- $mergeObjects
- New Aggregation Variable
- REMOVE という条件に合うfieldを結果に含めなくする変数が使えるようになった。
- New hint Option
- hint() で使うindexを指定できる。
- Support for Time Zones
- $dateToString で %z, %Z を使ってoffsetでtimezoneを指定できるようになった。
Array Update Operator Enhancements
-
findAndModify
やupdate
, その他いくつかのMethods ( update(), bulkWrite() など ) で、arrayFilters が使えるようになりました。 -
Multi-Element Array Updates: 配列の全ての要素を指す $ [ ] と arrayFilters で使える $[ ] をサポート。
-
Negative Array Index Position for push
-
$position
modifier でマイナスのindexが使えるようになりました。マイナスの場合は配列の最後から数えた要素を指します。
-
Genelral Enhancements
-
ShardingTaskExecutorPoolMaxConnecting
が追加された。 -
opensslCipherConfig
が追加された。 - zlib が —networkMessageCompressors でサポートされた。
- nested document を含む fields へのクエリーへのIndexがサポートされた。
- Diagnostics Capture (also known as FTDC) が mongos でサポートされた。以前はmongodのみだった。参考: Diagnostic Parameters
MongoDB 開発マイルストーン
JIRAでリリース日を明記しなくなった?
Indexの進化
Indexes | Version | 概要 |
---|---|---|
Multikey Index | v1.0 | 複合インデックス |
Geospatial Index | v1.4 | 地理空間インデックス |
Sparse Indexes | v1.8 | インデックス対象のfieldがない場合、インデックスしない |
Covered Queries | v1.8 | インデックス対象fieldのみのクエリーの場合に、Collectionを探索せずにダイレクトに結果を返す |
TTL Indexes | v2.2 | Time-To-Live. 期間を指定して作成することで、期間を過ぎると自動的にデータを削除する |
Text Indexes | v2.4 | 全文検索。v3.4の時点では日本語未対応。 |
Index Intersection | v2.6 | 1つのクエリーで2つのインデックスをMongoDB側でうまく組み合わせて使ってくれる |
Partial Indexes | v3.2 | 条件を設定することで、インデックスの作成対象をコレクション内の全ドキュメントではなく、一部のドキュメントに限定する |
Storage Engine
MongoDB 3.0 から選択可能に。
The storage engine is the component of the database that is responsible for managing how data is stored, both in memory and on disk. MongoDB supports multiple storage engines, as different engines perform better for specific workloads. Choosing the appropriate storage engine for your use case can significantly impact the performance of your applications.
Storage Engine | 概要 |
---|---|
WiredTiger | v3.2からデフォルトに。Enterprise版ではEncryptionをサポート。 |
MMAPv1 | v3.0までデフォルトで使われていたEngine。 |
In-Memory | Enterprise版で使える。 |
Lock Level の変化
Lock Level | Version | Storage Engine |
---|---|---|
Global | ~ v2.0 | - |
DB | v2.2 | - |
Collection | v3.0 | MMAPv1 |
Document | v3.0 | WiredTiger |
MongoDB, Inc. 資金調達の歴史
Date | Amount / Round | Lead Investor |
---|---|---|
Jul, 2008 | $1.5M / Series A | Union Square Ventures |
Nov, 2009 | $3.4M / Series B | Flybridge Capital Partners |
Dec, 2010 | $6.5M / Series C | Sequoia Capital |
Sep, 2011 | $20M / Series D | Sequoia Capital |
May, 2012 | $42M / Series E | New Enterprise Associates |
Oct, 2013 | $150M / Series E | T. Rowe Price |
Jan, 2015 | $80M / Series F | - |
Aug, 2017 | IPO? | - |
最新動向
日付 | ニュース |
---|---|
2017/06/20 | Recap of MongoDB World 2017 |
2017/06/21 | MongoDBがバックエンドサービスStitchを開始、AtlasはAzureとGCPに対応、そして新しいBIツールも発表 |
2017/06/21 | MongoDB、データベース内のデータをマウス操作で簡単にグラフ化できる「MongoDB Charts」発表。MongoDB World 2017 - Publickey |
2017/08/16 | NoSQLデータベースのMongoDBが非公開でIPOを申請 |
MongoDB World 2017
2017/06/20 に開催。
ケリー・マクゴニガルの双子の妹であるジェイン・マクゴニガルも登壇。
MongoDB Charts (coming soon)
MongoDB Chartsは、MongoDBに統合されたツール。「とてもシンプルに、ドキュメントセントリックで美しいチャートを作るためのツールだ。MongoDBに保存されているどんな統計的データも視覚化できる」(同社CTO兼共同創業者 Eliot Horowitz氏。
MongoDB 3.6 と一緒にリリースされる予定だそうです。
リリースノート翻訳
参考資料
- MongoDB の歴史(MongoDB 2.0 まで) #mongodbjp - 今日も適当ダイアリー
- MongoDBでゆるふわDB体験:連載|gihyo.jp … 技術評論社
- MongoDB 3.2 で追加された $lookup ステージを使ってみる - Qiita
- (レポート) MongoDB勉強会:MongoDB v3.4新機能と遅いときの切り分け方法 | Developers.IO
- MongoDB最新動向 - 日々の記録 別館 MongoDB 3.2 の話
- MongoDBのGUI CRUDツール:MongoDB Compassを使ってみた | Developers.IO
- MongoDB の Partial Indexes を試してみた | Developers.IO
- B TreeとB+ Treeの違い - Carpe Diem
- MongoDBのインデックス2 - Carpe Diem
MongoDB Download Links
JIRA
Manual Documents
- The MongoDB 3.4 Manual — MongoDB Manual 3.4
- Indexes — MongoDB Manual 3.4
- Storage Engines — MongoDB Manual 3.4
- The MongoDB 3.6 Dev Series Manual — MongoDB Manual 3.6