第5回 MongoDB 勉強会 in Tokyo 〜真夏の大Mongo祭り〜

久々に社外の勉強会に参加してきました。MongoDBはちょっと触った程度であまり知識がなく、しかも勉強会が久々だったこともあり勘違いもあるかと思いますが、感想を書きます。

Play with Mongoid!

Rubyで書かれたODM、Mongoidの紹介。ActiveRecord/DataMapperライクなAPIでMongoDBを扱うことができるので導入しやすいとのこと。こういったことがやり易いのがLLの良いところですね。
validationやrelationshipもお馴染みの形式で書ける上、独自にparanoidやversioningといった機能が提供されていて非常に参考になりました。MongoDBはスキーマレスなので、driverやそのwrapperが各ドキュメントに独自のフィールドをコッソリ追加することができ、それを使って独自の機能を提供しやすいのが面白いところだと思います。

YiiフレームワークとMongoDBを使ったFacebookアプリ開発

PHPのYiiフレームワーク+MongoDBでFacebookアプリを作る話。PHPは全く触ったことがないのですが、コードはActiveRecord風なこともあって普通に読めました。それにしてもPHPフレームワークの多さがすごい。これらのフレームワークが各々独自のdriver wrapperを作っているような印象を受けたのですが、そうだとしたらちょっともったいないかな、と。extensionを作って公開しながら開発を進めているのが羨ましかったです。滅多にPHPの話を聞く機会がないのでちょっとでもPHPの世界が覗けたという意味で貴重な時間でした。

ココロもつながるオンラインゲーム – アットゲームズ – のMongoDB導入事例

ゲームサイトでのMongoDB導入事例。MySQLで扱っていたデータの一部をMongoDBに移した、という話。更新頻度が高く整合性がそれほど重要ではないデータ(あしあと、ゲストブック)をMongoDBで扱うようにしたということで、今回この勉強会に参加した目的もそういったところを狙ってたので、非常に参考になりました。
自動フェイルオーバが行われない理由が、ReplicaSetを構成するサーバが3台以上ないとprimaryが死んだ時に残りのサーバがvoteしても過半数に満たない故であることがセッションの中で明らかに。これは結構やってしまうんじゃないかな…。そんな中でも積極的にshardingを使っている姿勢は素晴らしいと思いました。こういった情熱は大事だな、と改めて思い知ったという意味で、今日は参加して良かったな、と。そう思えるセッションでした。

Not Only NoSQL! RDBの逆襲 – PostgreSQL

それPostgreSQLでもできるよ!という話。MongoDBの勉強会の中で、面白いアプローチでした。主にPostgreSQLのarray typeとXML document機能の紹介。あまりRDBMSでarrayを積極的に使うことはないのですが、PostgreSQLのarray typeは結構色んなサポート機能が付いているということで、array typeを見直すことができたのが収穫でした。「Use Mongo insted of ORM!(or write SQL directly)」は、そもそも何でデータを表形式で保存するか、というところに立ち戻って考えてみたいな、と。
スキーマデザインの話がちょっと出てましたが、MongoDBのようなスキーマレスDBに対してスキーマデザインを検討するということは、アプリケーションのデータモデルを検討するのと同意なのか、それともアプリケーションの外のスコープまで検討するのか、非常に興味深いところです。

ビジネス視点のMongoDB vs RDB 〜MongoDBの導入戦略〜

何故MongoDBを使うのか、というところをビジネス視点で丁寧に考察し、向き/不向きをキッチリ提示するああたり非常に説得力がありました。情報を集めてアウトプットするだけではなく、自分でシッカリ考察して結論を提示するというのが素晴らしく、見習う点が多い発表でした。質問タイムにて、「MongoDBの本当の良い所はアプリケーションとDBの新しい関係性を構築すること」というのは至言だな、と。最初にネタっぽく始まり、途中から真面目モード、(質問に対する回答なので偶発的ではあったものの)最後は至言で締めるという緩急のつけ方も見事でした。

MongoDBとGridFSについて

GridFSをサービスに導入するにあたり、検証した結果を報告という内容でした。結果として、GridFS用に何か特殊な設定をすることなく、shardingやReplicaSetを設定すれは良い、とのこと。GridFSの話が出てくると、昔Oracleが9i頃から出しているOracle Database File Systemを思い出します。Oracleの方はファイルのversioning管理が出来たような(大分古い記憶なので違っているかもしれませんが)。GridFS特有の機能が色々と実装されると面白いのかな。file viewerとか欲しいですね。