O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Content Management
Systems and MongoDB
Mitch Pirtle
MongoNY - May 21 2010
New York, NY
One thing real quick, before
we get started.
About this presentation

 Databases from a CMS perspective
 How we got to where we are now
 What MongoDB brings to the equ...
About me
Nothing but web since 1995
Contributor to many FOSS projects (Joomla! founder)
Budding author
  MongoDB for Web D...
Familiar with CMS?
In the beginning...
Purpose of a CMS
Purpose of a CMS

Manage content
Purpose of a CMS

Manage content
Organize navigation
Purpose of a CMS

Manage content
Organize navigation
Dynamic search
Purpose of a CMS

Manage content
Organize navigation
Dynamic search
Self-service management of content
The result?
LAMP
Linux, Apache, MySQL, PHP
Challenges of a CMS
Challenges of a CMS


One size fits all
Challenges of a CMS


One size fits all
Based on ubiquitous platforms
Challenges of a CMS


One size fits all
Based on ubiquitous platforms
Lowest common denominator
Nothing against MySQL,
but...
Nothing against MySQL,
but...
Brittle, inflexible
Nothing against MySQL,
but...
Brittle, inflexible
Difficult for scale
Nothing against MySQL,
but...
Brittle, inflexible
Difficult for scale
Difficult for speed
Nothing against MySQL,
but...
Brittle, inflexible
Difficult for scale
Difficult for speed
Difficult to code with
Nothing against MySQL,
but...
Brittle, inflexible
Difficult for scale
Difficult for speed
Difficult to code with
Lack of relat...
Nothing against MySQL,
but...
Brittle, inflexible
Difficult for scale
Difficult for speed
Difficult to code with
Lack of relat...
Where that leaves us
Where that leaves us
Everybody ran out and installed without asking
Where that leaves us
Everybody ran out and installed without asking
ISPs happily limited choice
Where that leaves us
Everybody ran out and installed without asking
ISPs happily limited choice
End users and developers o...
Where that leaves us
Everybody ran out and installed without asking
ISPs happily limited choice
End users and developers o...
Where that leaves us
Everybody ran out and installed without asking
ISPs happily limited choice
End users and developers o...
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
Why develop in an
object language, just
to stuff mismatched
chunks of your
objects in a non-
object data store?
“How long can this go on?”
Introducing:
Where that leaves us now
Article with comments, tags,
categories       id
                     Articles

                 title
                 sl...
Article with comments, tags,
categories       id
                     Articles

                 title
                 sl...
Article with comments, tags,
categories       id
                     Articles

                 title
                 sl...
Article with comments, tags,
categories       id
                     Articles

                 title
                 sl...
Article with comments, tags,
categories       id
                     Articles

                 title
                 sl...
MySQL
MongoDB
MySQL
MongoDB
MySQL
MongoDB
What I’ve learned
implementing CMS
platforms with MongoDB
under the hood
Lessons learned
Lessons learned

Simplicity of code
Lessons learned

Simplicity of code
Performance
Lessons learned

Simplicity of code
Performance
Simplicity of scale
Lessons learned

Simplicity of code
Performance
Simplicity of scale
Rich media storage
Lessons learned

Simplicity of code
Performance
Simplicity of scale
Rich media storage
Amazing concurrency
Coming to a CMS near you
Drupal for MongoDB
http://drupal.org/project/mongodb

D7: mongodb_cache: Store cache items in mongodb

D7: mongodb_field_st...
Even MORE Drupal

Work to get listing API into core:
http://drupal.org/node/780154
Experimental goodies to play with:
http...
Joomla!


MongoDB helper library for Joomla!
(come see me after the talk for access)
Branch of 1.6 development for alterna...
Not CMS, but still cool.
Ruby & Rails

MongoMapper
http://github.com/jnunemaker/mongomapper/
Brings MongoDB to many RoR platforms
  RadiantCMS
  Ty...
Lithium PHP framework

http://rad-dev.org/lithium/wiki
MongoDB native support
Projects demonstrating MongoDB support:
  ht...
CakePHP framework

MongoDB datasource
http://github.com/ichikaway/mongoDB-Datasource
Example article
http://mark-story.com...
PHP framework


http://kohanaframework.org/
MangoDB
http://github.com/Wouterrr/MangoDB
MongoDB Language Center
http://www.mongodb.org/display/DOCS/Drivers
Community Resources
http://www.mongodb.org/display/DOCS/
Community
Development Tracker
http://jira.mongodb.org
MongoDB Cookbook
http://cookbook.mongodb.org/
Explore MongoDB @Github
http://github.com/search?q=mongo
Thanks!
Email: spacemonkey@mongodb.org
Skype: mitch.pirtle
Web: http://www.spacemonkeylabs.com
Slides: http://www.slidesha...
Content Management Systems and MongoDB
Content Management Systems and MongoDB
Content Management Systems and MongoDB
Próximos SlideShares
Carregando em…5
×

Content Management Systems and MongoDB

This is the deck from MongoNY in New York City, May 2010. The talk focused on how CMS platforms could take advantage of MongoDB.

  • Entre para ver os comentários

Content Management Systems and MongoDB

  1. 1. Content Management Systems and MongoDB Mitch Pirtle MongoNY - May 21 2010 New York, NY
  2. 2. One thing real quick, before we get started.
  3. 3. 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
  4. 4. About me Nothing but web since 1995 Contributor to many FOSS projects (Joomla! founder) Budding author MongoDB for Web Development Extreme Joomla! Performance High-traffic projects (Jetsetter, MTV, Food Networks) Husband, dad, skate punk, metalcore bassist, coach
  5. 5. Familiar with CMS?
  6. 6. In the beginning...
  7. 7. Purpose of a CMS
  8. 8. Purpose of a CMS Manage content
  9. 9. Purpose of a CMS Manage content Organize navigation
  10. 10. Purpose of a CMS Manage content Organize navigation Dynamic search
  11. 11. Purpose of a CMS Manage content Organize navigation Dynamic search Self-service management of content
  12. 12. The result?
  13. 13. LAMP Linux, Apache, MySQL, PHP
  14. 14. Challenges of a CMS
  15. 15. Challenges of a CMS One size fits all
  16. 16. Challenges of a CMS One size fits all Based on ubiquitous platforms
  17. 17. Challenges of a CMS One size fits all Based on ubiquitous platforms Lowest common denominator
  18. 18. Nothing against MySQL, but...
  19. 19. Nothing against MySQL, but... Brittle, inflexible
  20. 20. Nothing against MySQL, but... Brittle, inflexible Difficult for scale
  21. 21. Nothing against MySQL, but... Brittle, inflexible Difficult for scale Difficult for speed
  22. 22. Nothing against MySQL, but... Brittle, inflexible Difficult for scale Difficult for speed Difficult to code with
  23. 23. Nothing against MySQL, but... Brittle, inflexible Difficult for scale Difficult for speed Difficult to code with Lack of relational features pushed relational logic into applications
  24. 24. Nothing against MySQL, but... Brittle, inflexible Difficult for scale Difficult for speed Difficult to code with Lack of relational features pushed relational logic into applications Zero portability as a result
  25. 25. Where that leaves us
  26. 26. Where that leaves us Everybody ran out and installed without asking
  27. 27. Where that leaves us Everybody ran out and installed without asking ISPs happily limited choice
  28. 28. Where that leaves us Everybody ran out and installed without asking ISPs happily limited choice End users and developers obsequiously took LAMP for granted as the Right Tool for the Right Job™
  29. 29. Where that leaves us Everybody ran out and installed without asking ISPs happily limited choice End users and developers obsequiously took LAMP for granted as the Right Tool for the Right Job™ Managing content, from a relational database perspective, SUCKS
  30. 30. Where that leaves us Everybody ran out and installed without asking ISPs happily limited choice End users and developers obsequiously took LAMP for granted as the Right Tool for the Right Job™ Managing content, from a relational database perspective, SUCKS Building CMS apps is not much better either!
  31. 31. 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
  32. 32. Then the trouble starts “Hey, can we add social media to our website?”
  33. 33. Websites aren’t just content
  34. 34. Websites aren’t just content Interactivity
  35. 35. Websites aren’t just content Interactivity Rich media
  36. 36. Websites aren’t just content Interactivity Rich media Social media
  37. 37. Websites aren’t just content Interactivity Rich media Social media Web services integration
  38. 38. Websites aren’t just content Interactivity Rich media Social media Web services integration Crazy, whack-daddy scale
  39. 39. Why develop in an object language, just to stuff mismatched chunks of your objects in a non- object data store?
  40. 40. “How long can this go on?”
  41. 41. Introducing:
  42. 42. Where that leaves us now
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. 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
  48. 48. MySQL
  49. 49. MongoDB
  50. 50. MySQL
  51. 51. MongoDB
  52. 52. MySQL
  53. 53. MongoDB
  54. 54. What I’ve learned implementing CMS platforms with MongoDB under the hood
  55. 55. Lessons learned
  56. 56. Lessons learned Simplicity of code
  57. 57. Lessons learned Simplicity of code Performance
  58. 58. Lessons learned Simplicity of code Performance Simplicity of scale
  59. 59. Lessons learned Simplicity of code Performance Simplicity of scale Rich media storage
  60. 60. Lessons learned Simplicity of code Performance Simplicity of scale Rich media storage Amazing concurrency
  61. 61. Coming to a CMS near you
  62. 62. Drupal for MongoDB http://drupal.org/project/mongodb D7: mongodb_cache: Store cache items in mongodb D7: mongodb_field_storage: Store the fields in mongodb D7: mongodb_session: Store sessions in mongodb D6/D7: mongodb_watchdog: Store the watchdog messages in mongodb D6/D7: mongodb: support library for the other modules D7: mongodb_block: Store block information in mongodb. Very close to the core block API D7: mongodb_queue: DrupalQueueInterface implementation using mongodb http://sf2010.drupal.org/conference/sessions/mongodb-humongous-drupal
  63. 63. Even MORE Drupal Work to get listing API into core: http://drupal.org/node/780154 Experimental goodies to play with: http://drupalcode.org/viewvc/drupal/contributions/ sandbox/chx/dbtng_mongo_experimental/
  64. 64. Joomla! MongoDB helper library for Joomla! (come see me after the talk for access) Branch of 1.6 development for alternative query builder Full MongoDB support most likely in 2.0
  65. 65. Not CMS, but still cool.
  66. 66. Ruby & Rails MongoMapper http://github.com/jnunemaker/mongomapper/ Brings MongoDB to many RoR platforms RadiantCMS Typo Mephisto
  67. 67. Lithium PHP framework http://rad-dev.org/lithium/wiki MongoDB native support Projects demonstrating MongoDB support: http://rad-dev.org/lithium_mongo/source http://rad-dev.org/lithium_blog/source
  68. 68. CakePHP framework MongoDB datasource http://github.com/ichikaway/mongoDB-Datasource Example article http://mark-story.com/posts/view/using-mongodb- with-cakephp
  69. 69. PHP framework http://kohanaframework.org/ MangoDB http://github.com/Wouterrr/MangoDB
  70. 70. MongoDB Language Center http://www.mongodb.org/display/DOCS/Drivers
  71. 71. Community Resources http://www.mongodb.org/display/DOCS/ Community
  72. 72. Development Tracker http://jira.mongodb.org
  73. 73. MongoDB Cookbook http://cookbook.mongodb.org/
  74. 74. Explore MongoDB @Github http://github.com/search?q=mongo
  75. 75. Thanks! Email: spacemonkey@mongodb.org Skype: mitch.pirtle Web: http://www.spacemonkeylabs.com Slides: http://www.slideshare.net/ spacemonkeylabs

×