Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mongo NYC PHP Development


Published on

  • Be the first to comment

Mongo NYC PHP Development

  1. 1. MongoNYC - PHP Development With MongoDB Presented By: Fitz Agard - LightCube Solutions LLC May 20, 2010
  2. 2. Introductions - Who is this guy? { “name”: “Fitz Agard”, “description”: [“Developer”,”Consultant”,”Data Junkie”, “Educator”, “Engineer”], “location”: “New York”, “companies”:[ {“name”: “LightCube Solutions”, “url”: “”} ], “urls”:[ {“name”: “LinkedIn”, “url”: “”}, {“name”: “Twitter”, “url”: “”} ], “email”: “” } (If the above formatting confused you please see -
  3. 3. Yankee Stadium Get People In Make the Most of their Time Get People Out Safely
  4. 4. Web-Based Applications 1. Get Data In 2. Make the most of the data 3. Get the data out safely
  5. 5. Does your PHP code work well with this?
  6. 6. How about this?
  7. 7. Why PHP Developers Should Use MongoDB? Database Reasons • Document-oriented storage - JSON-style documents with dynamic schemas offer simplicity and power. • Full Index Support - Index on any attribute. • Replication & High Availability - Mirror across LANs and WANs. • Auto-Sharding - Scale horizontally without compromising functionality. • Querying - Rich, document-based queries. • Fast In-Place Updates - Atomic modifiers for contention-free performance. • Map/Reduce - Flexible aggregation and data processing. • GridFS - Store files of any size.
  8. 8. Why PHP Developers Should Use MongoDB? PHP Reasons OO AD P UT RAD AOP
  9. 9. Why PHP Developers Should Use MongoDB? PHP Reasons Object elopm ent Orient ed e Dev Progra A gil mming st ing nit Te U Rapid Aspect Oriented Aplic Deve ation Development lopm ent
  10. 10. Why PHP Developers Should Use MongoDB? The KISS Method
  11. 11. Use Case - eCommerce
  12. 12. Imagine the SQL (not PHP) code you would have to write to figure out product details.
  13. 13. Simple and Flexible mongodb-and-ecommerce/
  14. 14. Mongo and PHP in a Nutshell Common Methods Conditional Operators • find() • $ne • findOne() • $in • save() • $nin • remove() • $mod • update() • $all • group() • $size • limit() • $exists • skip() • $type • ensureIndex() • $gt • count() • $lt • ...And More • $lte • $gte
  15. 15. Don’t you find it strange we haven’t talked about PHP yet?
  16. 16. Check out all the open PHP projects!
  17. 17. phpMoAdmin Eric David Benari - • Nothing to configure - place the moadmin.php file anywhere on your web site and it just works! • Fast AJAX-driven XHTML 1.1 interface operates consistently in every browser! • Self-contained in a single 90kb file! • Works on any version of PHP5 with the MongoDB NoSQL database & Mongo PHP driver installed and running. • Option to enable password-protection for one or more users; to activate protection, just add the username-password(s) to the array at the top of the file. • E_STRICT PHP code is formatted to the Zend Framework coding standards + fully-documented in the phpDocumentor DocBlock standard. • Instructional error messages - phpMoAdmin can be used as a PHP-Mongo connection debugging tool • All textareas can be resized by dragging/stretching the lower-right corner. • Multiple design themes to choose from • Free & open-source! Released under the GPLv3 FOSS license!
  18. 18. ActiveMongo Cesar D. Rodas- • Handle MongoDB connection, connecting once when it is needed • Define a Collection as a class • Abstracts iteration over a dataset • Efficient save() which creates or updates efficiently (using $unset, $set) a document • Provides simple queries interface • Use of MongoCollection for complex queries in sub-classes • Delete current object, Drop() table • Support filtering per property • Support for efficient updates on nested documents • Dynamic References (AKA, save a query to execute later)
  19. 19. Let’s talk about PHP Frameworks that Support MongoDB
  20. 20. Let’s Pick a Framework and Use it with MongoDB
  21. 21. +
  22. 22. • Integrated Unit Testing (speed, quality) [thank you: closures, iterators] • Aspect Inspired Filter System (flexibility) [thank you: closures, lambdas, iterators] • Document Oriented Data Sources (speed, flexibility) [thank you mongodb] • Automatic output escaping (quality) [thank you: stream wrappers] • Extensible plugin support (flexibility) [thank you: namespaces] • Static Models with Object Oriented Results (speed, flexibility) [thank you: late static binding, iterators] • More, More, More....
  23. 23. Let’s Make Use of the MVC
  24. 24. Your Connection
  25. 25. Your Connection Use This
  26. 26. Your Connection Not This
  27. 27. Setup Your Model This will setup your mongodb collection
  28. 28. Setup Your Views index.html.php add.html.php
  29. 29. Last But Not Least - The Controller
  30. 30. Yay!
  31. 31. It Worked!
  32. 32. What happens when we need to extend our Blog? Let’s add a Tag!
  33. 33. Normally we would touch this!
  34. 34. = Dynamic Schema
  35. 35. Just Change Your Views index.html.php add.html.php
  36. 36. Just Change Your Views index.html.php add.html.php
  37. 37. What else can I do with MongoDB and PHP?
  38. 38. Cursors MongoDates Indexes MapReduce ...Just to name a few... Sharding Exceptions MongoBinData MongoCode MongoRegex
  39. 39. No more time. Go here for more:
  40. 40. { “type”: “Conclusion”, “date”: new Date('05-21-2010'), “comments”: [“Thank You”,”Have Fun Developing”], “location”: “New York”, “speaker”: “Fitz H. Agard”, “contact”: “” }