Your SlideShare is downloading. ×
Introduction to MongoDB with PHP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Introduction to MongoDB with PHP

11,721
views

Published on

Quick introduction to MongoDB, a popular document-oriented database, and MongoDB drivers for PHP.

Quick introduction to MongoDB, a popular document-oriented database, and MongoDB drivers for PHP.

Published in: Technology

0 Comments
16 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
11,721
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
0
Comments
0
Likes
16
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • /usr/local/mongodb-2.0.1/bin/mongod --port 27017 --dbpath /usr/local/mongodb-2.0.1/data/node1 --replSet cluster/localhost:10001 /usr/local/mongodb-2.0.1/bin/mongod --port 10001 --dbpath /usr/local/mongodb-2.0.1/data/node1 --replSet cluster/localhost:27017 /usr/local/mongodb-2.0.1/bin/mongo localhost:27017/admin
  • Sharding ./mongod --dbpath ~/dbs/config --port 20000 ./mongos --port 30000 --configdb localhost:20000 ./mongod --dbpath ~/dbs/shard1 --port 10001 ./mongod --dbpath ~/dbs/shard2 --port 10002 ./mongo localhost:30000/admin db.runCommand({"addshard" : "localhost:10000", allowLocal : true}) db.runCommand({"enablesharding" : "blog"}) db.runCommand({"shardcollection" : "blog.posts", "key" : {"title" : 1}})
  • Transcript

    • 1. MongoDB with PHP James Tang <james@fwso.cn> A quick introduction
    • 2. What is MongoDB
    • 3. NoSQL
      • MongoDB is a document-oriented database
        • Store data as structured documents
      • Document-oriented databases are NoSQL
        • Apache CouchDB
      • Scale horizontally
        • Avoid join operations
        • 4. Distributed computing
    • 5. Why MongoDB
    • 6. Agility MongoDB simplifies development. Data in MongoDB is stored in JSON-like documents with dynamic schemas( free schema ), providing flexibility during the development process. Requirements changes so frequently
    • 7. Scalability & Performance
      • Build-in support for horizontal availability
      • 8. Auto-sharding
        • Save different parts of data on different machines
      • Replication: backup, failover, read scaling
        • Master-slave replication
        • 9. Replica Sets: automatic failover, no single master
      • MapReduce
    • 10. How MongoDB works
    • 11. BSON MongoDB use BSON as the storage format. BSON has following characteristics: Reference: http://bsonspec.org/
    • 14. Data Files
      • BSON objects store in collections
      • 15. db_name.collection_name called namespace
      • 16. .ns file used to store metadata for namespace.
      • 17. Dbname.0, .1, .2... stores the data
      • 18. The new file double the file size, up to 2GB
        • blog.0(16M), blog.1(32M)...
      • MongoDB preallocates data files to ensure consistent performance
    • 19. Memory Management
      • Memory-mapped storage engine
        • Maps all it's data files in memory
        • 20. The virtual size of mongod process may very large
      • Leave other works to operating system
      • 21. 32bit MongoDB server limit to 2G data per mongod instance
    • 22. Wire Protocol Clients use wire protocol to access MongoDB server. Wire Protocol is a TCP/IP socket based lightweight protocol. Reference: http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol
    • 23. Getting Started
    • 24. Installation
      • Very easy, just download, and extract
      • 25. Start server: /path/to/mongodb/bin/mongod
        • Default: localhost:27017
      • ./mongod -- port 27017 -- maxConns 50 -- logpath /usr/local/mongodb-2.0.1/var/logs/mongod.log -- pidfilepath /usr/local/mongodb-2.0.1/var/run/mongod.pid -- dbpath /usr/local/mongodb-2.0.1/data/db -- directoryperdb
    • 26. Shell Client
      • ./mongo [localhost:27017/test]
      • 27. use blog
      • 28. db.posts.insert({“title”:”Hello, MongoDB”})
      • 29. db.posts.find()
      • 30. db.posts.remove([criteria])
      • 31. db.posts.drop()
      • 32. ...
    • 33. PHP driver
      • pecl install mongo
      • 34. Or dowload and compile
      • 35. Extenstion address: http://pecl.php.net/package/mongo
      • 36. Enable at php.ini
        • extension=mongo.so
    • 37. CRUD
    • 38. Before CRUD
      • Create Database?
      • 39. Create Collection(table)?
      • 40. Alter Schema?
      NO
    • 41. Before CRUD
      • Connect to Server
      <?php $ mongo = new Mongo( /* ”localhost:27017” */ ); //Instance of `MongoDB`(PHP class here) $ blog = $ mongo -> blog; //Instance of `MongoCollection` $ posts = $ blog -> posts;
    • 42. Creating
    • 43. Querying // search for documents where 5 < x < 20 $rangeQuery = array ('views' => array ( '$gt' => 5, '$lt' => 20 )); //Instance of `MongoCursor` class $cursor = $posts -> find($rangeQuery);
      • $collection->find(/*criteria*/, /*fields*/), Query a list
      • $collection->findOne(/*criteria*/), Query one
      // “ _id ” field is always return , except set to false in fields option: //$post->find(array(...), array( '_id'=>false , 'title'));
    • 44. Querying
      • Query can be complex
        • $lt, $lte, $gt, $gte, $not, $in...
        • 45. $where, array('$where'=>'function(){... return true/false}')
        • 46. Regular expression, array('title'=>'/^Hello/i')
        • 47. Limit/Sort with cursor
        • 48. Aggregation, count/group
      • Reference
        • http://www.mongodb.org/display/DOCS/Querying
        • 49. http://www.mongodb.org/display/DOCS/Advanced+Queries
    • 50. Updating
    • 51. Updating Using updating modifier: $inc, $set, $push, ...
    • 52. Why Modifiers
      • Convenient
      • 53. Atomically – instead of locking and transactions
      • 54. Reference
        • http://www.mongodb.org/display/DOCS/Atomic+Operations
        • 55. http://www.mongodb.org/display/DOCS/Updating
    • 56. Upserts Like REPLACE statement in MySQL
    • 57. Deleting
      • $collection->remove(/*criteria*/)
      • 58. $collection->drop()
    • 59. Advanced Features
    • 60. MapReduce
      • Aggregation parallelized across multiple servers
      • 61. Count, distinct, group can be done with it
      • 62. Speed is the cost, not use in “real time”
    • 63. Replication
      • Master-slave, slave automatically synchronize the data
        • ./mongod --dbpath ~/dbs/master --port 27017 --master
        • 64. ./mongod --dbpath ~/dbs/slave --port 10001 --slave --source localhost:27017
      • Replica Sets
        • Master-slave, but auto-failover
        • 65. Not only one master
        • 66. mongod --port 27017 --dbpath /data/node1 --replSet cluster/localhost:10001
        • 67. mongod --port 10001 --dbpath /data/node1 --replSet cluster/localhost:27017
        • 68. db.runCommand({“replSetInitiate”:{“_id”:”cluster”, “members”:[{“_id”:1,”host”:”locahost:27017”},...]}})
    • 69. Sharding
      • Store different data in different servers
      • 70. Sharding key, one key of a collection used to split data
      • 71. A shard is can be a single server or a replica set
    • 72. Capped Collection
      • Created in advance and fixed size
        • db.createCollection(&quot;my_collection&quot;, {capped: true, size: 100000});
      • Operations like delete, update causes documents to move is disallowed
      • 73. Old document will be replaced if collection if full
      • 74. High performance, auto-FIFO, age-out
        • Loging, caching, ...
    • 75. GridFS
      • Store large binary files
      • 76. Replication, auto-sharding
        • Failover, scale-out
      • Use mongofiles
        • ./mongofiles [put|get|list|...] file.png
      • PHP: MongoGridFS, MongoGridFSFile, MongoGridFSCursor
    • 77. The End http://fwso.cn