つい先日の9月12日、MongoDB 2.0 が正式にリリースされました。
「2.0 から始める MongoDB」 という記事を書くにあたって、MongoDB 2.0までの遷移を調べていたのですが思いのほか濃い内容になってしまい、せっかくなのでここで皆さまに共有します。
~2008年
Githubのレポジトリを見ると、ファーストコミットは2007年10月20日のこと。"first commit" というメッセージと共に30ファイル、計約2000行のコードがコミットされています。いつから開発が始まったかは定かではありませんが、2007年後半からプロジェクトがスタートしたと推測できます。
(正確な情報をご存じの方がいましたら、教えてください。)
GitHub: mongodb/mongo - first commit
Gitリポジトリのタグから察すると、2007年10月に最初のコミットが行われた後、2008年の6~7月には ver.0.0系、2008年下半期には ver.0.1系(rcのタグしかないのですが)を開発しており、MongoDB の基本的な機能を実装していたものと思われます。
2009年
2009年に入ると、ver.0.2系が2009年2月に、ver.0.9.0が 2009年4月にリリースされており、ver.1.0 に向けての最終調整に入る事になります。
2009年の半ばくらいから、ちらほらと日本でもブログなどの記事として MongoDB が登場するようになってきます。
また、この頃になると、プロジェクト管理ツールとして JIRA が導入されたようです。
MongoDB Core Server (JIRA)
7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
---|---|---|---|---|---|
(07: ver.0.9.6) (29: ver.0.9.7) |
14: (ver.0.9.8) 18: (ver.0.9.9) 24: (ver.0.9.10) 27: ver.1.0.0 |
(14: ver.1.1.0) | (01: ver.1.1.1) (16: ver.1.1.2) 22: ver.1.0.1 |
(10: ver.1.1.3) | (04: ver.1.1.4) 10: ver.1.2.0 30: ver.1.2.1 (31: ver.1.3.0) |
表では、日付(JIRA 上のリリース日なので、ずれている場合があるかも)とバージョン番号を載せています。また、安定版は太字に、開発版はカッコ付きで表記してあります。
なお、MongoDBのバージョン番号は少し特殊で、0.2 ずつ上がります。マイナーバージョンが偶数のものが安定版(1.0, 1.2, 1.4 …)、奇数のものが次のリリースへの開発版(1.1 は 1.2 の開発版, 1.3 は 1.4 の開発版…)となります。(少しでも見やすいように、バージョン0.2ずつ交互に色分けして表示してあります。)
バージョン 1.0
2009年8月27日にバージョン1.0.0として、初めての正式なGAリリースが行われます。
バージョン1.0.0のリリース後、9月~12月にかけて、1.1系が開発されます。その後、12月10日に、バージョン1.2.0がリリースされます。
バージョン 1.2
リリースノートを要約すると次のようになります。
多くの改善が行われていますが、MapReduce 機能により、サーバー側で柔軟に解析や集計させることが出来るようになった事は見逃せないでしょう。
蛇足ですが、1.2で正式に取り込まれた機能で気になったものを少しだけピックアップします。
Add --version option
実は、ver.1.1.1 まで --version オプションが無かったそうな。これまでは、起動しない限りはバージョン情報を見ることが出来ませんでした。
JSON PrettyPrinter
読みやすい形で JSON を整形してくれる機能は、ver.1.1.4 で追加されました。
mongoコンソールは javascript で何でもできるので非常に重宝しているのですが、この機能がないと、大きなドキュメントは見る気になりませんね。。。
2010年
さて、年が改まって2010年を見ていきます。NoSQLが一気に有名になりバズワード化したのもこの年だったと思いますが、MongoDBはより使いやすく進化していきます。
1月 | 2月 | 3月 | 4月 | 5月 | 6月 |
---|---|---|---|---|---|
(20: ver.1.3.1) 27: ver.1.2.2 |
23: ver.1.2.3 (11: ver.1.3.2) |
01: ver.1.2.4 (02: ver.1.3.3) (17: ver.1.3.4) (22: ver.1.3.5) 25: ver.1.4.0 |
07: ver.1.2.5 (09: ver.1.5.0) 14: ver.1.4.1 27: ver.1.4.2 |
(03: ver.1.5.1) 24: ver.1.4.3 (27: ver.1.5.2) |
(17: ver.1.5.3) 29: ver.1.4.4 |
バージョン 1.4
2010年3月には ver.1.4 がリリースされました。
ver.1.4 は MongoDB 全体に渡って、様々な機能強化や改善が行われました。かゆい所に手が届かない事が以前はありましたが、このバージョンできちんと手が届くプロダクトに進化していると言えるでしょう。
GeoIndex(地理空間へのIndex)への対応も特筆に値するユニークな機能でしょう。
また、ver.1.6 で正式にリリースされるシャーディングの布石としての機能がこのバージョンで追加されているのも、見逃せません。
7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
---|---|---|---|---|---|
(02: ver.1.5.4) (16: ver.1.5.5) (24: ver.1.5.6) (30: ver.1.5.7) |
(03: ver.1.5.8) 05: ver.1.6.0 17: ver.1.6.1 31: ver.1.4.5 |
01: ver.1.6.2 (04: ver.1.7.0) 23: ver.1.6.3 (28: ver.1.7.1) |
26: ver.1.6.4 (29: ver.1.7.2) |
(16: ver.1.7.3) 20: ver.1.6.5 |
(21: ver.1.7.4) |
2010年8月には、ver.1.6.0 がリリースされます。
ver.1.6 ではシャーディングが production-ready として正式に追加されました。また、レプリケーション機能においてもレプリカセットがリリースされ、より幅広いニーズに応えられるようになりました。
この、シャーディングとレプリケーションにより、水平スケール、バックアップ、フェイルオーバーなどの巨大なデータや安定性に必要不可欠な機能が一通り出そろったといえるでしょう。
また、この頃になると、日本でも MongoDB の情報が様々なところで見られるようになってきます。MongoDB JP が立ち上がったのも11月。その翌月に「第1回 MongoDB JP & CouchDB JP 合同勉強会」が開催されるなど、ユーザー数も急激に増加していたと思います。
2011年
1月 | 2月 | 3月 | 4月 | 5月 | 6月 |
---|---|---|---|---|---|
(26: ver.1.7.5) | (14: ver.1.7.6) (23: ver.1.8.0-rc0) |
(04: ver.1.8.0-rc1) (09: ver.1.8.0-rc2) 16: ver.1.8.0 |
06: ver.1.8.1 | (02: ver.1.9.0) | 17: ver.1.8.2 |
2011年3月には ver.1.8 がリリースされました。
大きな機能としては、write-ahead(書き込み前に)ログを取ることで、素早いクラッシュリカバリと耐久性を助けるジャーナリング機能や、特定の検索を高速化する Sparse, Cavered インデックス、より柔軟な Map/Reduce をサポートするオプションの追加、などが挙げられます。
特に、ジャーナリングのサポートは、耐久性、信頼性の向上に寄与する機能で、プロダクトで使用する際には心強い機能です。
リリースノートには小さくしか記載されていないのですが、個人的には、Geoインデックスが球体対応し、ほぼ正確な地球上の距離を使用してのソートなどが可能になったことも見逃せない向上点です。
7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
---|---|---|---|---|---|
(26: ver.1.9.1) | (15: ver.1.9.2) 22: ver.1.8.3 (25: ver.2.0.0-rc0) |
(02: ver.2.0.0-rc1) (07: ver.2.0.0-rc2) 12: ver.2.0.0 *29: ver.2.0.1 |
*04: ver.1.8.4 (04: *ver.2.1.0) |
(01: *ver.2.1.1) (29: *ver.2.1.2) |
9月14日以降のリリース(*)については、目標であり正式なものではありません。
現時点での最新版である MongoDB 2.0.0 がリリースされたのは12日でした。
さすが、メジャーバージョンアップだけあって、様々な機能が追加されています。
ここでは、それぞれの機能を紹介しませんが、主に、開発・運用のしやすさに対する機能(クエリやコマンド、セキュリティ機能など)追加とその改善、そして、信頼性やスケーラビリティなどのための機能追加やその改善などが特に注力されているように思います。
レプリカセットの機能として、クラウドでの利用をサポートするために、データセンターやロケーションに対しての柔軟なオプションが設定できるようになったことも大きな進化です。
最後に
こうやって一気に歴史を追ってみると、MongoDB の設計思想である柔軟性、パワー、スピード、そして簡単に使えることをきちんと追求していることが垣間見れた気がします。
(設計思想については「2.0 からはじめる MongoDB - 第0回 #mongodbjp : 今日も適当ダイアリー」で取り上げています)
きっと今後も MongoDB はより柔軟に、よりパワフルに、より高速に、より簡単になっていくでしょう。そんな MongoDB にこれからも目が離せませんよ!
関連記事もどうぞ
- 2.0 からはじめる MongoDB
- 【番外編】MongoDB の歴史(MongoDB 2.0 まで)