ECサイトでPHP×MongoDBを使ってみた
ここ最近よく見かける言葉で「ドキュメント指向型データベース」なんてのがありますが、正直、従来のRDBMSとどう違うのかさっぱりわからない。
で、このドキュメント指向型データベースの代表格がCouchDBとMongoDBなんですが、自分なりに調べてみた結果、MongoDBの方が環境をそろえる敷居は
低そうなので、深いことは考えず、MongoDBをちょっと使ってみることにした。
- MongoDB
- http://www.mongodb.org/
- 大規模サイトほど恩恵があるらしい。
- とりあえず、「速い」「どんなデータでも入る」「自由」らしい。
- インストールは公式サイトからWindowsもLinuxもバイナリ一式を落としてくる形になる。
- なので、Linuxが苦手な人でも割と簡単に導入可能。
- しかし、共用サーバーでは動かないという辛さ。
- インストールの参考になるページ
- なので、Linuxが苦手な人でも割と簡単に導入可能。
- MongoDBを使ったプログラム
- 携帯電話向けのクレジットカード決済用セッションの保存
- ぶっちゃけ、RDBMSでもいいし、普通はそうすると思う。
- 携帯電話はクッキーが使えないので、決済サービスに接続する際に、セッションの内容をどこかに保存しなければならない。
- 「仮注文ID」「セッションID」「セッション名」「セッションの値」をMongoDBに保存
- 決済が完了したら注文完了画面へリダイレクトされる仕様なので、決済サービスからのリターンコードなど取得し、MongoDBからセッションの値を読み込んで、注文成立させる。
- 「仮注文ID」「セッションID」「セッション名」「セッションの値」をMongoDBに保存
- 携帯電話向けのクレジットカード決済用セッションの保存
- 実際、PHPでどう使うのか?
- ここを参考にPECLでインストール。
- http://tonby.sakura.ne.jp/?p=603
- とりあえず、SQLでやりそうな接続、取得、追加、更新、削除。
- ここを参考にPECLでインストール。
<?php // 接続 $mongo=new Mongo(); $db = $mongo->selectDB($dbName); /** *データ取得 **/ // DBでいうデーブルを指定 $col=$db->selectCollection("session"); // 全件取得 $cursor=$col->find(); //var_dump($cursor); // 条件付き取得 SQLでいうWhereっぽいもの $cursor=$col->find(array("session_id"=>"hogehogehoge")); //var_dump($cursor); // 一件だけ取得したい場合 $cursor=$col->findOne(array("unique_id"=>"hoge1")); //var_dump($cursor); // ページネートしたい場合(自信ありません) // 取得した結果に対して $cursor->skip(10); // Skipで11件目から表示し $cursor->limit(10); // そこから10件まで取得可能にする // データの追加 // $dataは基本連想配列でkey=>valueな値で。 $col->insert($data); // 更新(自信ありません) // 追加と同様に$dataは基本連想配列でkey=>valueな値で // とりあえずは、array_merge($data,$newData)で古いデータと新しいデータを置き換えるようにしてる。 $data=$col->findOne(array("unique_id"=>"hoge1")); $data=array_merge($data,$newData); $col->save($data); // 削除(全てを焼き払いたい人向け) $col->remove(); // 条件付き削除 $col->remove(array("unique_id"=>"hoge1")); ?>
- 使ってみた感想
- RDBMSようなテーブルの結合みたいなことはできないっぽい。
- なので、今のところはなんでも入る箱と考えるようにしている。
- フィールドの型やフィールド数を一切、意識しなくていいので楽。
- あるデータだけフィールドが一つ増えても、全く怒られない。
- 故に拡張しやすいし、改修もしやすいと思う。
- あるデータだけフィールドが一つ増えても、全く怒られない。
- 今後もなんとな〜く使っていきたいので、勉強が必要。
- 日本語書籍化希望
- MongoDB日本語ドキュメント http://www.mongodb.org/display/DOCSJP/Home
- すごくありがたい
- RDBMSようなテーブルの結合みたいなことはできないっぽい。
MongoDBについてちょっとだけ解説
みてわかるクラウドマガジンvol.1 (日経BPパソコンベストムック)
posted with amazlet at 10.08.26