ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    スポンサーサイト

    このエントリーを含むはてなブックマーク はてなブックマーク - スポンサーサイト あとで読む
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    CouchDBとMongoDB

    このエントリーを含むはてなブックマーク はてなブックマーク - CouchDBとMongoDB あとで読む
    NoSQL型のデータストアの一つとして、ドキュメント指向データベースがある。

    ●NoSQL
    はてなブックマーク > タグ > nosql

    NoSQL データストアのデータモデル (グリッド協議会 第28回ワークショップ, December 17, 2009)
    RDBに代わるスケーラブルなデータモデルの必要性 - sdyuki-devel

    ●ドキュメント指向データベース
    以前、CouchDBというデータストアがあることを知って、ドキュメント指向データベースに関心を抱いた。
    ドキュメント指向データベース「CouchDB」 - 浜村拓夫の世界

    ・ドキュメント指向データベースにはスキーマがなく、データベースを実際に使う前に厳密なスキーマを定義する必要がない。



    最近、CouchDBの解説記事が増えてきたので注目を浴びているのだろう。
    そして、CouchDBと比較されるデータストアの一つとして、MongoDBというのも目にするようになった。

    はてなブックマーク > タグ > couchdb
    はてなブックマーク > タグ > mongodb

    ●MongoDB
    MongoDBもNoSQLの一つであり、ドキュメント指向データベースに属する。
    MySQLのようなRDBからNoSQLに移行する人にとって、CouchDBよりもMongoDBの方が親和性が高いらしい。

    CouchDBとMongoDBを比較してみた - Masatomo Nakano Blog

    一般的に、RDBMSに慣れた人がKVSなデータベースを触る場合、「RDBMSのことは忘れろ」が定石だ。
    実際、私もそう思うし、そうした方がいいんだろうけど、やはり長年RDBMS生活をしていると難しい面もある。
    MongoDBを触っていると、あちこちで懐かしいRDBMSの匂いがするので、 RDBMS出身の人には入りやすいデータベースだと思う。



    Mongoと比較 - Web屋修行中の人の日記 || WebJourney 開発ログ

    MongoDBはよさそうだなぁと思いつつも、CouchDBに比べて守備範囲が広いので、その分プラクティスを積むのに時間がかかりそう。

    まったく新しいデータベースを目指しているCouchDB


    これは誤解で、Lotus Notes/Domino をクラサバモデルから解き放つ実装です。



    Wikipedia - Lotus Notes

    Lotus Notesは1989年に登場した、クライアントサーバー型のグループウェアであり、グループウェアという言葉を市場に浸透させたソフトウエアであるといわれている。
    非定型の情報を扱う分散型の文書データベースの構造と、強力な複製機能を持っており、プラットフォーム依存性が低く、カスタマイズ性が非常に高いとされる。このため大規模なシステムの基盤となる事が多い。


    ドキュメント指向データベースの源流って、ロータスNotes/Dominoだったんだ!ほ~。

    ●MongoDBのインストール
    PHPとMongoDBで学ぶ次世代データストア

    インストール
    ・pecl install mongo
    ・あと php.ini に extension=mongo.so と書くだけ - PHPer歓喜


    PHP+MongoDBは手軽に試せる。

    PHP Manual > 関数リファレンス > Mongo

    導入
    これらの関数を使用すると、PHP と Mongo データベースサーバとのやりとりを行うことができます。
    MongoDB は、高性能でオープンソース、そしてスキーマフリーな文書データベースです。クラウドコンピューティング用に設計されています。



    ●MongoDBを採用する理由
    私がCouchDBを使わない理由 - taro-nishino の日記

    CouchDBは非常に面白い。それなのに、何故私は使わないのか?

    ビュー
    残念ながら、オリジナルのデータからのビューだけを作れる。他のビューが入力となるビューを作る方法はない。これが意味することは、多重ドキュメントからの値に面白いことは何も出来ないということだ。

    代替
    「ドキュメント指向ストレージ」のため、SQLiteと残念ながらMySQLと同様に、非常に優秀なBerkeley DBを使い続けており、これらすべてが非常に上手く動いている。持続性のサポートは至る所にあり、CouchDBと違って、APIは安定し完備している。

    他の調べる価値のあるものはMongoDB(残念ながらトランザクションが無い)、key/valueペアデータベース(これらの多くが最近配布されている)、RDFトリプルストア、XMLデータベースである。

    スキーマの無いデータストレージを調べる時に留意すべき最も重要なことは、「貴方はGoogleでない」というスケーリングの公理であると思う。人は、スケールするための成功した製品を持つこと無しに、スケーラビリティについて極端な関心を持っているようだ。



    ・スキーマのないデータストアの用途は、いろいろある。
    ・例えばAmazonの商品データの保存。AmazonのItemAttributes(商品のスペックデータ、詳細情報)の内容は、商品カテゴリーによってまちまちなので、RDBに格納するよりもドキュメント指向データベースに入れる方が、手軽に扱える。
    ・スクレイピングによって取得した様々なフォーマットのデータを扱う場合も同様。
    ・データベースの設計がヘタクソでも、スキーマレスならデータ格納後でも事後対応が柔軟にできる。

    スケーラビリティや高速性といった性能面におけるメリットよりも、開発を楽にするという恩恵を鑑みて、もっと手軽にドキュメント指向データベースを利用できるようになりたい。

    ・テスト開発 → ドキュメント指向データベース
    ・クラウド → Google App Engine(MapReduce)
    ・オンプレミス → MySQL、GAEと対称性を保持するためにHadoop

    Key-Value型は、大規模なWebサービスを作れたら使えばいい。=今のところ出番なし。(笑)

    ●CouchDBとMongoDBの日本語ドキュメント
    ・MongoDB
    http://www.mongodb.org/display/DOCSJP/Home

    ・CouchDB
    http://dl.dropbox.com/u/673631/couchdb/html/index.html

    CakePHPからフォークしたLithiumは、MongoDBをサポートしている。
    Lithium Users in Japan - MongoDBへの対応がなされてます。

    フレームワーク自体がドキュメント指向データベースに対応していれば、RDBとオブジェクトモデルのインピーダンスミスマッチを解消するためにO/Rマッパーを採用する必要がないので、使い方がシンプルになるだろうか?

    Lithiumのバージョンが安定したら一つ試してみるか。

    HadoopHadoop
    (2010/01/25)
    Tom White

    商品詳細を見る
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/472-939afb49

    FC2Ad

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。