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 equation
 Where we are going
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
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
Content Management Systems and MongoDB
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 relational features pushed relational logic into
applications
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
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 obsequiously took LAMP for
granted as the Right Tool for the Right Job™
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
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!
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
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
Content Management Systems and MongoDB
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:
Content Management Systems and MongoDB
Where that leaves us now
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
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
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
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
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
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_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
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/
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
Not CMS, but still cool.
Ruby & Rails

MongoMapper
http://github.com/jnunemaker/mongomapper/
Brings MongoDB to many RoR platforms
  RadiantCMS
  Typo
  Mephisto
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
CakePHP framework

MongoDB datasource
http://github.com/ichikaway/mongoDB-Datasource
Example article
http://mark-story.com/posts/view/using-mongodb-
with-cakephp
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.slideshare.net/
spacemonkeylabs

More Related Content

KEY
MongoDB: Built for Speed
KEY
Joomla and MongoDB
PPTX
Why NoSQL and MongoDB for Big Data
PPTX
An Introduction to Big Data, NoSQL and MongoDB
PPTX
MongoDB
POTX
Content Management with MongoDB by Mark Helmstetter
KEY
MongoDB and hadoop
KEY
Content Mangement Systems and MongoDB
MongoDB: Built for Speed
Joomla and MongoDB
Why NoSQL and MongoDB for Big Data
An Introduction to Big Data, NoSQL and MongoDB
MongoDB
Content Management with MongoDB by Mark Helmstetter
MongoDB and hadoop
Content Mangement Systems and MongoDB

Similar to Content Management Systems and MongoDB (20)

PDF
Blog Comments Organizer
KEY
Schema Design by Example ~ MongoSF 2012
KEY
MongoDB for Genealogy
PPTX
What’s the big deal about semantic HTML?
PPTX
Html goodies
PPTX
Webinar: MongoDB for Content Management
KEY
OSCON 2012 MongoDB Tutorial
KEY
WordPress as a CMS (short version)
PPTX
Lesson 3
PPT
Newspapers with WordPress
PDF
Html5 reference-poster
PDF
Practical AtomPub Servers @ YAPC::Asia 2008
PPTX
Documentation 2.0: DIY Content Delivery and Feedback in Real-time
PDF
MongoDB NoSQL and all of its awesomeness
PDF
Tagging 101 (Northern Voice)
PDF
PDF
XML en NoSQL
KEY
Flexible site structure with cake php
PDF
Markup As An Api
Blog Comments Organizer
Schema Design by Example ~ MongoSF 2012
MongoDB for Genealogy
What’s the big deal about semantic HTML?
Html goodies
Webinar: MongoDB for Content Management
OSCON 2012 MongoDB Tutorial
WordPress as a CMS (short version)
Lesson 3
Newspapers with WordPress
Html5 reference-poster
Practical AtomPub Servers @ YAPC::Asia 2008
Documentation 2.0: DIY Content Delivery and Feedback in Real-time
MongoDB NoSQL and all of its awesomeness
Tagging 101 (Northern Voice)
XML en NoSQL
Flexible site structure with cake php
Markup As An Api
Ad

More from Mitch Pirtle (20)

PDF
Cloudy with a chance of scale
PDF
My life with MongoDB
PDF
PHP Cloud Deployment Toolkits
PDF
MongoDB, Node.js, and You: PART III
PDF
MongoDB, Node.js And You: PART II
PDF
Mongodb, Node.js and You: PART I
PDF
MongoDB, Development and You
PDF
MongoTorino 2013 Opening Keynote
PDF
Data as Documents: Overview and intro to MongoDB
PDF
Cloud conference - mongodb
KEY
Unified Content Model and Joomla!
KEY
Gridfs and MongoDB
KEY
Joomla - an Overview
KEY
Operational MongoDB
KEY
Joomla Extreme Performance
PDF
Mongodb and Totsy: An e-commerce case study
KEY
Mongodb and Totsy - E-commerce Case Study
KEY
PHP, Lithium and MongoDB
KEY
Joomla For Entrepreneurs
KEY
Thin Server Architecture
Cloudy with a chance of scale
My life with MongoDB
PHP Cloud Deployment Toolkits
MongoDB, Node.js, and You: PART III
MongoDB, Node.js And You: PART II
Mongodb, Node.js and You: PART I
MongoDB, Development and You
MongoTorino 2013 Opening Keynote
Data as Documents: Overview and intro to MongoDB
Cloud conference - mongodb
Unified Content Model and Joomla!
Gridfs and MongoDB
Joomla - an Overview
Operational MongoDB
Joomla Extreme Performance
Mongodb and Totsy: An e-commerce case study
Mongodb and Totsy - E-commerce Case Study
PHP, Lithium and MongoDB
Joomla For Entrepreneurs
Thin Server Architecture
Ad

Recently uploaded (20)

PPTX
Benefits of Physical activity for teenagers.pptx
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPT
What is a Computer? Input Devices /output devices
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
Unlock new opportunities with location data.pdf
PDF
Five Habits of High-Impact Board Members
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
Getting Started with Data Integration: FME Form 101
Benefits of Physical activity for teenagers.pptx
NewMind AI Weekly Chronicles – August ’25 Week III
Zenith AI: Advanced Artificial Intelligence
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
WOOl fibre morphology and structure.pdf for textiles
observCloud-Native Containerability and monitoring.pptx
Assigned Numbers - 2025 - Bluetooth® Document
What is a Computer? Input Devices /output devices
Developing a website for English-speaking practice to English as a foreign la...
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Getting started with AI Agents and Multi-Agent Systems
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Unlock new opportunities with location data.pdf
Five Habits of High-Impact Board Members
A review of recent deep learning applications in wood surface defect identifi...
A contest of sentiment analysis: k-nearest neighbor versus neural network
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
A novel scalable deep ensemble learning framework for big data classification...
Getting Started with Data Integration: FME Form 101

Content Management Systems and MongoDB