Joomla! and MongoDBMitch PirtleJoomla!Day New York CityDecember 4, 2010
Before we beginCoffee?Breakfast?
NERDS!Are you ready to get your nerd on?
About this presentation Databases from a CMS perspective How we got to where we are now What MongoDB brings to the equatio...
About me
About meNothing but web since 1995
About meNothing but web since 1995Joomla founder, MongoDB contributor
About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.com
About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web Developm...
About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web Developm...
About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web Developm...
About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web Developm...
How it all started
“I need a website, and wantto be able to manage it onmy own.”
We got that,we’ll just use a CMS.
Purpose of a CMSManage contentOrganize navigationDynamic searchSelf-service management of content
The result?
LAMPLinux, Apache, MySQL, PHP
Challenges of a CMSOne size fits allBased on ubiquitous platformsLowest common denominator
Nothing against MySQL,but...
Nothing against MySQL,but...Brittle, inflexible
Nothing against MySQL,but...Brittle, inflexibleDifficult for scale
Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speed
Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speedDifficult to code with
Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speedDifficult to code withLack of relational ...
Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speedDifficult to code withLack of relational ...
Where that leaves us
Where that leaves usEverybody ran out and installed without asking
Where that leaves usEverybody ran out and installed without askingISPs happily slashed choice
Where that leaves usEverybody ran out and installed without askingISPs happily slashed choiceEnd users and developers obse...
Where that leaves usEverybody ran out and installed without askingISPs happily slashed choiceEnd users and developers obse...
Where that leaves usEverybody ran out and installed without askingISPs happily slashed choiceEnd users and developers obse...
Your relational data Whoah Nelly! Good reason for a DBA Many foreign keys Need for triggers, stored procedures, cronjobs...
Article with comments &tags         Tags          Articles       Comments   id              id               id   tag     ...
Then the trouble starts“Hey, can we add social media to our website?”
Websites aren’t just content
Websites aren’t just content Interactivity
Websites aren’t just content Interactivity Rich media
Websites aren’t just content Interactivity Rich media Social media
Websites aren’t just content Interactivity Rich media Social media Web services integration
Websites aren’t just content Interactivity Rich media Social media Web services integration Crazy, whack-daddy scale
“How long can this go on?”
Why develop in anobject language, justto stuff mismatchedchunks of yourobjects in a non-object data store?
Introducing:
What MongoDB can do
What MongoDB can doSimplifies development
What MongoDB can doSimplifies developmentStores in binary JSON objects
What MongoDB can doSimplifies developmentStores in binary JSON objectsReturn data directly to browser in JSON
What MongoDB can doSimplifies developmentStores in binary JSON objectsReturn data directly to browser in JSONStore data, bi...
Article with comments, tags,categories       id                     Articles                 title                 slug   ...
Article with comments, tags,categories       id                     Articles                 title                 slug   ...
Article with comments, tags,categories       id                     Articles                 title                 slug   ...
Article with comments, tags,categories       id                     Articles                 title                 slug   ...
Article with comments, tags,categories       id                     Articles                 title                 slug   ...
The Whole ThangK.I.S.S.Simple to manageSimple to accessLittle or no need forforeign constraints
What it looks like now 2.5GB data on disk 1.0GB data in memory
CODE.Examples of MongoDB on the console, baby.
MySQL
MongoDB
MySQL
MongoDB
MySQL
MongoDB
What MongoDB did for mewhile building Totsy.com
What MongoDB did for me.Encouraged extremely simple data model, producingtighter, faster, bug-free code.
What MongoDB did for me.Eliminated the need for cache.Really. No kidding.
What MongoDB did for me.Used GridFS for all file storage. Lithium happilyprovided a media adapter allowing us to create aGr...
What MongoDB did for me.Removed worries about a complicated hostingenvironment
What MongoDB did for me.Bought us a ton of time to carefully deliberate nextsteps, and come out of permanent crisis mode
What MongoDB did for me.Allowed us to commit every possible crime required forsurvival in a frantic, frenetic startup envi...
Coming to a CMS near you
Drupal for MongoDBhttp://drupal.org/project/mongodbD7: mongodb_cache: Store cache items in mongodbD7: mongodb_field_storage...
Even MORE DrupalWork to get listing API into core:http://drupal.org/node/780154Experimental goodies to play with:http://dr...
Joomla!MongoDB helper library for Joomla!https://github.com/spacemonkey/sml4joomlaBranch of 1.6 development for alternativ...
No wait, almost forgot.
Announcing JMongoAdminJoomla native extensionSimilar in interface to phpMyAdminStatus: currently alpha, beta in January 20...
Not CMS, but still relevant
Ruby & RailsMongoMapperhttp://github.com/jnunemaker/mongomapper/Brings MongoDB to many RoR platforms  RadiantCMS  Typo  Me...
Lithium PHP frameworkhttp://rad-dev.org/lithium/wikiMongoDB native supportProjects demonstrating MongoDB support:  http://...
CakePHP frameworkMongoDB datasourcehttp://github.com/ichikaway/mongoDB-DatasourceExample articlehttp://mark-story.com/post...
PHP frameworkhttp://kohanaframework.org/MangoDBhttp://github.com/Wouterrr/MangoDB
More about MongoDB
MongoDB Language Centerhttp://www.mongodb.org/display/DOCS/Drivers
Community Resourceshttp://www.mongodb.org/display/DOCS/Community
Development Trackerhttp://jira.mongodb.org
MongoDB Cookbookhttp://cookbook.mongodb.org/
Explore MongoDB @Githubhttp://github.com/search?q=mongo
Mongo PHP Languagehttp://us2.php.net/mongo
Time for my favorite gameStump the Nerd™
Thanks!Email: spacemonkey@mongodb.orgTwitter: @mitchitizedWeb: http://www.spacemonkeylabs.comSlides: http://www.slideshare...
Photo credits business man 1, by Larissa Kanno    A big goose, by Andrea http://www.sxc.hu/photo/877661      Kratzenberg  ...
Joomla and MongoDB
Upcoming SlideShare
Loading in …5
×

Joomla and MongoDB

13,337 views

Published on

This is the deck from the Joomla!Day NYC in 2010. There's also a video online, URL to be added when it is available.

Published in: Technology
1 Comment
14 Likes
Statistics
Notes
No Downloads
Views
Total views
13,337
On SlideShare
0
From Embeds
0
Number of Embeds
803
Actions
Shares
0
Downloads
0
Comments
1
Likes
14
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Joomla and MongoDB

    1. 1. Joomla! and MongoDBMitch PirtleJoomla!Day New York CityDecember 4, 2010
    2. 2. Before we beginCoffee?Breakfast?
    3. 3. NERDS!Are you ready to get your nerd on?
    4. 4. About this presentation Databases from a CMS perspective How we got to where we are now What MongoDB brings to the equation Where we are going
    5. 5. About me
    6. 6. About meNothing but web since 1995
    7. 7. About meNothing but web since 1995Joomla founder, MongoDB contributor
    8. 8. About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.com
    9. 9. About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web Development
    10. 10. About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web DevelopmentComing Soon: Extreme Joomla! Performance
    11. 11. About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web DevelopmentComing Soon: Extreme Joomla! PerformanceHigh-traffic projects (Jetsetter, MTV, Food Networks)
    12. 12. About meNothing but web since 1995Joomla founder, MongoDB contributorCTO at Totsy.comComing Soon: MongoDB for Web DevelopmentComing Soon: Extreme Joomla! PerformanceHigh-traffic projects (Jetsetter, MTV, Food Networks)Husband, dad, skate punk, metalcore bassist
    13. 13. How it all started
    14. 14. “I need a website, and wantto be able to manage it onmy own.”
    15. 15. We got that,we’ll just use a CMS.
    16. 16. Purpose of a CMSManage contentOrganize navigationDynamic searchSelf-service management of content
    17. 17. The result?
    18. 18. LAMPLinux, Apache, MySQL, PHP
    19. 19. Challenges of a CMSOne size fits allBased on ubiquitous platformsLowest common denominator
    20. 20. Nothing against MySQL,but...
    21. 21. Nothing against MySQL,but...Brittle, inflexible
    22. 22. Nothing against MySQL,but...Brittle, inflexibleDifficult for scale
    23. 23. Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speed
    24. 24. Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speedDifficult to code with
    25. 25. Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speedDifficult to code withLack of relational features pushed relational logic intoapplications
    26. 26. Nothing against MySQL,but...Brittle, inflexibleDifficult for scaleDifficult for speedDifficult to code withLack of relational features pushed relational logic intoapplicationsZero portability as a result
    27. 27. Where that leaves us
    28. 28. Where that leaves usEverybody ran out and installed without asking
    29. 29. Where that leaves usEverybody ran out and installed without askingISPs happily slashed choice
    30. 30. Where that leaves usEverybody ran out and installed without askingISPs happily slashed choiceEnd users and developers obsequiously took LAMP forgranted as the Right Tool for the Right Job™
    31. 31. Where that leaves usEverybody ran out and installed without askingISPs happily slashed choiceEnd users and developers obsequiously took LAMP forgranted as the Right Tool for the Right Job™Managing content, from a relational databaseperspective, SUCKS
    32. 32. Where that leaves usEverybody ran out and installed without askingISPs happily slashed choiceEnd users and developers obsequiously took LAMP forgranted as the Right Tool for the Right Job™Managing content, from a relational databaseperspective, SUCKSBuilding CMS apps is not much better either!
    33. 33. Your relational data Whoah Nelly! Good reason for a DBA Many foreign keys Need for triggers, stored procedures, cronjobs...
    34. 34. Article with comments &tags Tags Articles Comments id id id tag title date_created slug author_id excerpt parent_id author_id subject ArticleTags date_created content id date_published article_id date_modified tag_id content
    35. 35. Then the trouble starts“Hey, can we add social media to our website?”
    36. 36. Websites aren’t just content
    37. 37. Websites aren’t just content Interactivity
    38. 38. Websites aren’t just content Interactivity Rich media
    39. 39. Websites aren’t just content Interactivity Rich media Social media
    40. 40. Websites aren’t just content Interactivity Rich media Social media Web services integration
    41. 41. Websites aren’t just content Interactivity Rich media Social media Web services integration Crazy, whack-daddy scale
    42. 42. “How long can this go on?”
    43. 43. Why develop in anobject language, justto stuff mismatchedchunks of yourobjects in a non-object data store?
    44. 44. Introducing:
    45. 45. What MongoDB can do
    46. 46. What MongoDB can doSimplifies development
    47. 47. What MongoDB can doSimplifies developmentStores in binary JSON objects
    48. 48. What MongoDB can doSimplifies developmentStores in binary JSON objectsReturn data directly to browser in JSON
    49. 49. What MongoDB can doSimplifies developmentStores in binary JSON objectsReturn data directly to browser in JSONStore data, binary objects, whatevah!
    50. 50. Article with comments, tags,categories id Articles title slug excerpt author_id date_created date_published date_modified content comments -- comment1 -- comment2 -- comment3 tags -- tag1 -- tag2 -- tag3 categories -- category1 -- category2 -- category3
    51. 51. Article with comments, tags,categories id Articles title slug excerpt author_id date_created Atomic date_published date_modified content comments -- comment1 -- comment2 -- comment3 tags -- tag1 -- tag2 -- tag3 categories -- category1 -- category2 -- category3
    52. 52. Article with comments, tags,categories id Articles title slug excerpt author_id date_created Atomic date_published date_modified content Simple comments -- comment1 -- comment2 -- comment3 tags -- tag1 -- tag2 -- tag3 categories -- category1 -- category2 -- category3
    53. 53. Article with comments, tags,categories id Articles title slug excerpt author_id date_created Atomic date_published date_modified content Simple comments -- comment1 -- comment2 Fast -- comment3 tags -- tag1 -- tag2 -- tag3 categories -- category1 -- category2 -- category3
    54. 54. Article with comments, tags,categories id Articles title slug excerpt author_id date_created Atomic date_published date_modified content Simple comments -- comment1 -- comment2 Fast -- comment3 tags -- tag1 Complete -- tag2 -- tag3 categories -- category1 -- category2 -- category3
    55. 55. The Whole ThangK.I.S.S.Simple to manageSimple to accessLittle or no need forforeign constraints
    56. 56. What it looks like now 2.5GB data on disk 1.0GB data in memory
    57. 57. CODE.Examples of MongoDB on the console, baby.
    58. 58. MySQL
    59. 59. MongoDB
    60. 60. MySQL
    61. 61. MongoDB
    62. 62. MySQL
    63. 63. MongoDB
    64. 64. What MongoDB did for mewhile building Totsy.com
    65. 65. What MongoDB did for me.Encouraged extremely simple data model, producingtighter, faster, bug-free code.
    66. 66. What MongoDB did for me.Eliminated the need for cache.Really. No kidding.
    67. 67. What MongoDB did for me.Used GridFS for all file storage. Lithium happilyprovided a media adapter allowing us to create aGridFS plugin to transparently store files in thedatabase.
    68. 68. What MongoDB did for me.Removed worries about a complicated hostingenvironment
    69. 69. What MongoDB did for me.Bought us a ton of time to carefully deliberate nextsteps, and come out of permanent crisis mode
    70. 70. What MongoDB did for me.Allowed us to commit every possible crime required forsurvival in a frantic, frenetic startup environment
    71. 71. Coming to a CMS near you
    72. 72. Drupal for MongoDBhttp://drupal.org/project/mongodbD7: mongodb_cache: Store cache items in mongodbD7: mongodb_field_storage: Store the fields in mongodbD7: mongodb_session: Store sessions in mongodbD6/D7: mongodb_watchdog: Store the watchdog messages in mongodbD6/D7: mongodb: support library for the other modulesD7: mongodb_block: Store block information in mongodb. Very close to the coreblock APID7: mongodb_queue: DrupalQueueInterface implementation using mongodbhttp://sf2010.drupal.org/conference/sessions/mongodb-humongous-drupal
    73. 73. Even MORE DrupalWork to get listing API into core:http://drupal.org/node/780154Experimental goodies to play with:http://drupalcode.org/viewvc/drupal/contributions/sandbox/chx/dbtng_mongo_experimental/
    74. 74. Joomla!MongoDB helper library for Joomla!https://github.com/spacemonkey/sml4joomlaBranch of 1.6 development for alternative query builderFull MongoDB support most likely in 2.0
    75. 75. No wait, almost forgot.
    76. 76. Announcing JMongoAdminJoomla native extensionSimilar in interface to phpMyAdminStatus: currently alpha, beta in January 2011Stable in Q1 2011Funded solely by David Jolyhttp://davidjoly.com/
    77. 77. Not CMS, but still relevant
    78. 78. Ruby & RailsMongoMapperhttp://github.com/jnunemaker/mongomapper/Brings MongoDB to many RoR platforms RadiantCMS Typo Mephisto
    79. 79. Lithium PHP frameworkhttp://rad-dev.org/lithium/wikiMongoDB native supportProjects demonstrating MongoDB support: http://rad-dev.org/lithium_mongo/source http://rad-dev.org/lithium_blog/source
    80. 80. CakePHP frameworkMongoDB datasourcehttp://github.com/ichikaway/mongoDB-DatasourceExample articlehttp://mark-story.com/posts/view/using-mongodb-with-cakephp
    81. 81. PHP frameworkhttp://kohanaframework.org/MangoDBhttp://github.com/Wouterrr/MangoDB
    82. 82. More about MongoDB
    83. 83. MongoDB Language Centerhttp://www.mongodb.org/display/DOCS/Drivers
    84. 84. Community Resourceshttp://www.mongodb.org/display/DOCS/Community
    85. 85. Development Trackerhttp://jira.mongodb.org
    86. 86. MongoDB Cookbookhttp://cookbook.mongodb.org/
    87. 87. Explore MongoDB @Githubhttp://github.com/search?q=mongo
    88. 88. Mongo PHP Languagehttp://us2.php.net/mongo
    89. 89. Time for my favorite gameStump the Nerd™
    90. 90. Thanks!Email: spacemonkey@mongodb.orgTwitter: @mitchitizedWeb: http://www.spacemonkeylabs.comSlides: http://www.slideshare.net/spacemonkeylabs
    91. 91. Photo credits business man 1, by Larissa Kanno A big goose, by Andrea http://www.sxc.hu/photo/877661 Kratzenberg http://www.sxc.hu/photo/1148702 Orient Lamp, by Greg Griffin http://www.sxc.hu/photo/964807 Steppe eagle, by Gabor Szakacs http://www.sxc.hu/photo/1044948 Binary code 1, by Flavio Takemoto http://www.sxc.hu/photo/1159613 Blue sportscar, by Jean Scheijen http://www.sxc.hu/photo/794992 Cats, by (anonymous) http://www.sxc.hu/photo/1273828 EW_PKB, by daniel wildman http://www.sxc.hu/photo/845589 Cougar on the prowl, by (anonymous) http://www.sxc.hu/photo/1253662

    ×