MongoDBをはじめた

仕事で既存Railsアプリケーションの追加機能を実装することになった。求められていることは新規機能の設計、実装、他のエンジニアのコードレビューなどになる。ジョインしてみて一番のネックだったのはMongoDBだった。

  • データストアがRDBでないので勝手が分からない
  • システムのデータが確認出来ない
  • スキーマレスで最初にエンティティが把握できないのでドメインモデルや仕様が分からない

仕事を開始してから1, 2日でこれはもう無理だと分かり、数日でMongoDBをマスターしないとならないことになった。以下に自分がトライしたことをまとめることにする。

MongoDBインアクション

MongoDBイン・アクション

MongoDBイン・アクション

日本語で読める唯一の書籍で、概念的なこと(コレクション、ドキュメント等)はこれで学んだ。だが出版されてからかなり時間が経っておりRubyのサンプル等はほとんど動かなかった。すぐに諦めて次の情報源に進んだ。

MongoDB解体新書

困っていた時にこの書籍をKindleで見つけることが出来た。出版社から発売されているものではないので最初は躊躇したが買って良かったと思う。

  • 1章 MongoDBとは何か?
  • 2章 MongoDBのインストール
  • 3章 MongoDBを試してみよう!
  • 4章 データベース操作
  • 5章 コレクションの操作
  • 6章 ドキュメントの登録
  • 7章 ドキュメントの検索
  • 8章 ドキュメントの更新
  • 9章 ドキュメントの削除
  • 10章 データ集計
  • 11章 一括高速処理
  • 12章 インデックス
  • 13章 各種設定
  • 14章 レプリカセット
  • 15章 シャーディング
  • 16章 セキュリティ
  • 17章 バックアップ・リストア
  • 18章 データのインポート・エクスポート
  • 19章 MongoDBの設計
  • 20章 Javaのサンプルプログラム
  • 21章 Node.jsのサンプル
  • 付録

自分は1章から12章まで一気に読んだ後に18章、19章を読んだ。それ以外の章の知識は運用やパフォーマンスチューニングで必要になった時に読んでいけばいいだろう。1章から12章をやることでMongoDBをなんとかやれそうな気になることが出来た。

Learning Mongoid

Learning Mongoid: Build Scalable, Efficient Rails Web Applications With Mongoid

Learning Mongoid: Build Scalable, Efficient Rails Web Applications With Mongoid

MongoDBに慣れたら、プログラムで使うライブラリーやODM(Object Document Mapper)を次にマスターしないとならない。自分の携わるサービスはRailsアプリケーションでMongoidを使っていたので、公式のMongoidのドキュメントを読んだ。公式のドキュメントはかなりよく出来ており、これだけでMongoidを十分使ってはいけると思う。だが自分はサンプルデータ等を使ってチュートリアル的にマスターしたかったのでこの書籍を読んだ。

  • Chapter1: What's so Awesome about Mongoid?
  • Chapter2: Mongoid Document Model
  • Chapter3: Persisting Documents
  • Chapter4: Mongoid Relations
  • Chapter5: Mongoid Queries
  • Chapter6: Performance Tuning
  • Chapter7: Mongoid Modules

Learning Mongoidは洋書だが140ページしかないため英語がそれほど得意でなくてもなんとか頑張って読み切れるドキュメント量だと思う。140ページしかないから内容が薄いと思われがちだがそんなことはない。一般の書籍はインストールや環境構築でページ数が割かれているがこの書籍はそんなことは一切端折ってプログラミングに必要なことのみに集中している。

Document Modelの宣言の仕方、fieldの型、CRUD処理、リレーション、クエリメソッド、パフォーマンスチューニング等、必要な知識を一通り学べた。最後の章でTimestampingやAASM(Acts as state machine)といったモジュールが紹介されている。自分のやっているサービスもAASMを使っていたので自分としてはスゴイ助かった。

仕事の合間にこの本を何度も読んでしまう。少し情報が古くなっているのが残念だが今でも十分活用出来る書籍だと思う。(できれば新しいバージョンでリニューアルして出してくれないかと思っているが)

Mongoidを使うのならマストに読む本だとおすすめする。