KEMBAR78
PhpstudyTokyo MongoDB PHP CakePHP | PPT
2010/1/30 PHP Study Tokyo  #49 Yasushi Ichikawa (id:cakephper) ‏ (id:ichikaway) MongoDB + PHP + Cake
self-introduction Yasushi Ichikawa Twitter: @cakephper Twitter: @ichikaway  Blog English http://cake.eizoku.com/blog/ Japanese http://d.hatena.ne.jp/cakephper http://d.hatena.ne.jp/ichikaway
TOPIC 1. MongoDB 2. PHP + MongoDB 3. CakePHP + MongoDB
MongoDB Open-source non-relational DB Scalable Schema less Queryable Company: 10gen Download http://www.mongodb.org/display/DOCS/Downloads
MongoDB Term Table = Collection Row = Document
MongoDB Not replace all RDB Mongo not Fit Need join, Transaction Small disk space each record has field name and value Mongo Fit Need Performance, Scale Develop quickly
MongoDB Performance Business insider http://www.businessinsider.com/how-we-use-mongodb-2009-11 Over 600,000 PV / business day  3 apache + 1 mongoDB MongoDB uses under 5% cpu time
MongoDB Schema less Document: bson (similar json) Binary data different schema in same collection  Posts collection Id, title, body Id, name, tel, fax Id, name, nickname, email
MongoDB RDB schema Natural data structure?? Blog Title Text tag1,tag2,tag3 Comment1 Comment2 Comment3 PC Screen RDB Blog table Title Text Tags table Tag1 Tag2 Tag3 Comment Table Comment1 Comment2 Comment3
MongoDB Schema less Natural data structure Blog collection Title : xxxx Text : yyyy Tag: [tag1,tag2,tag3] Comment: [comment1, comment2, comment3 ] PC Screen Mongo Blog Title Text tag1,tag2,tag3 Comment1 Comment2 Comment3
MongoDB DEMO
Pecl Mongo MongoDB + PHP
Pecl Mongo Pecl Mongo pecl install mongo  php.ini extension=mongo.so http://us2.php.net/mongo
Pecl Mongo Connect $mongo = new Mongo(localhost:27017); $db = $mongo->selectDB('blog'); select collection $collection = $db->selectCollection('posts'); Find $collection->find($cond, $filed) ->sort()->limit(5)->skip(); Insert $collection->insert($data); Update $newdata = array(' $set ' => $data); $collection->update($cond, $newdata);
Pecl Mongo Insert data Array( 'title' => 'hello', 'body' => 'fine day, nice!', 'tag' => array('tag1', 'tag2', 'tag3'), 'comment' => array('cmt1', 'cmt2'), );
Pecl Mongo DEMO
Cake Mongo MongoDB + CakePHP
Cake Mongo MongoDB Datasource for Cakephp My project, start 2010/1/16 mongodb.org link it Version 0.1 release, 0.2 branch  Easy to Use, like using mysql datasource http://github.com/ichikaway/mongoDB-Datasource
Cake Mongo DEMO
Thank you!
show dbs use hogedb show collections ichikawa={name:'ichikawa', lang:['php','perl']} db.users.save(ichikawa) yasushi={name:'yasushi', lang:['japanese','english']} db.users.save(yasushi) db.users.count() db.users.find({name:"ichikawa"}) db.users.find({lang:"english"}) db.users.update({name:"ichikawa"}, {"$push":{lang:"javascript"}}) db.users.update({name:"ichikawa"}, {"$pop":{lang:""}}) db.posts.drop() db.dropDatabase()
<?php //MongoDB find sample $mongo = new Mongo('localhost:27017'); $db = $mongo->selectDB('phpstudy'); $collection = $db->selectCollection('posts'); $cond = array('tag' => 'tag9'); $field = array(); $result = $collection->find($cond, $field); $results = null; while ($result->hasNext()) { $mongodata = $result->getNext(); if (is_object($mongodata['_id'])) { $mongodata['_id'] = $mongodata['_id']->__toString(); } $results[][$model->alias] = $mongodata; } print_r($results); $mongo->close;
<?php //mongoDB insert sample $mongo = new Mongo('localhost:27017'); $db = $mongo->selectDB('phpstudy'); $collection = $db->selectCollection('posts'); $data = array( 'title' => 'hello', 'body' => 'world', 'tag' => array('tag1', 'tag2'), ); $collection->insert($data); $mongo->close;

PhpstudyTokyo MongoDB PHP CakePHP

  • 1.
    2010/1/30 PHP StudyTokyo #49 Yasushi Ichikawa (id:cakephper) ‏ (id:ichikaway) MongoDB + PHP + Cake
  • 2.
    self-introduction Yasushi IchikawaTwitter: @cakephper Twitter: @ichikaway Blog English http://cake.eizoku.com/blog/ Japanese http://d.hatena.ne.jp/cakephper http://d.hatena.ne.jp/ichikaway
  • 3.
    TOPIC 1. MongoDB2. PHP + MongoDB 3. CakePHP + MongoDB
  • 4.
    MongoDB Open-source non-relationalDB Scalable Schema less Queryable Company: 10gen Download http://www.mongodb.org/display/DOCS/Downloads
  • 5.
    MongoDB Term Table= Collection Row = Document
  • 6.
    MongoDB Not replaceall RDB Mongo not Fit Need join, Transaction Small disk space each record has field name and value Mongo Fit Need Performance, Scale Develop quickly
  • 7.
    MongoDB Performance Businessinsider http://www.businessinsider.com/how-we-use-mongodb-2009-11 Over 600,000 PV / business day 3 apache + 1 mongoDB MongoDB uses under 5% cpu time
  • 8.
    MongoDB Schema lessDocument: bson (similar json) Binary data different schema in same collection Posts collection Id, title, body Id, name, tel, fax Id, name, nickname, email
  • 9.
    MongoDB RDB schemaNatural data structure?? Blog Title Text tag1,tag2,tag3 Comment1 Comment2 Comment3 PC Screen RDB Blog table Title Text Tags table Tag1 Tag2 Tag3 Comment Table Comment1 Comment2 Comment3
  • 10.
    MongoDB Schema lessNatural data structure Blog collection Title : xxxx Text : yyyy Tag: [tag1,tag2,tag3] Comment: [comment1, comment2, comment3 ] PC Screen Mongo Blog Title Text tag1,tag2,tag3 Comment1 Comment2 Comment3
  • 11.
  • 12.
  • 13.
    Pecl Mongo PeclMongo pecl install mongo php.ini extension=mongo.so http://us2.php.net/mongo
  • 14.
    Pecl Mongo Connect$mongo = new Mongo(localhost:27017); $db = $mongo->selectDB('blog'); select collection $collection = $db->selectCollection('posts'); Find $collection->find($cond, $filed) ->sort()->limit(5)->skip(); Insert $collection->insert($data); Update $newdata = array(' $set ' => $data); $collection->update($cond, $newdata);
  • 15.
    Pecl Mongo Insertdata Array( 'title' => 'hello', 'body' => 'fine day, nice!', 'tag' => array('tag1', 'tag2', 'tag3'), 'comment' => array('cmt1', 'cmt2'), );
  • 16.
  • 17.
  • 18.
    Cake Mongo MongoDBDatasource for Cakephp My project, start 2010/1/16 mongodb.org link it Version 0.1 release, 0.2 branch Easy to Use, like using mysql datasource http://github.com/ichikaway/mongoDB-Datasource
  • 19.
  • 20.
  • 21.
    show dbs usehogedb show collections ichikawa={name:'ichikawa', lang:['php','perl']} db.users.save(ichikawa) yasushi={name:'yasushi', lang:['japanese','english']} db.users.save(yasushi) db.users.count() db.users.find({name:&quot;ichikawa&quot;}) db.users.find({lang:&quot;english&quot;}) db.users.update({name:&quot;ichikawa&quot;}, {&quot;$push&quot;:{lang:&quot;javascript&quot;}}) db.users.update({name:&quot;ichikawa&quot;}, {&quot;$pop&quot;:{lang:&quot;&quot;}}) db.posts.drop() db.dropDatabase()
  • 22.
    <?php //MongoDB findsample $mongo = new Mongo('localhost:27017'); $db = $mongo->selectDB('phpstudy'); $collection = $db->selectCollection('posts'); $cond = array('tag' => 'tag9'); $field = array(); $result = $collection->find($cond, $field); $results = null; while ($result->hasNext()) { $mongodata = $result->getNext(); if (is_object($mongodata['_id'])) { $mongodata['_id'] = $mongodata['_id']->__toString(); } $results[][$model->alias] = $mongodata; } print_r($results); $mongo->close;
  • 23.
    <?php //mongoDB insertsample $mongo = new Mongo('localhost:27017'); $db = $mongo->selectDB('phpstudy'); $collection = $db->selectCollection('posts'); $data = array( 'title' => 'hello', 'body' => 'world', 'tag' => array('tag1', 'tag2'), ); $collection->insert($data); $mongo->close;