Introducing MongoPress – MongoDB CMS – an OpenSource High-Performance Platform

2:03 am in MongoDB by Mark Smalley

It all started with a challenge. I was asked how quickly I could scan through 7 million or more locations and find the ten closest locations ordered by distance. To be clear, we have spent a lot of time perfecting our MySQL queries for locations, and the quickest we could perform such a query on a data-set as large as 7 million plus records (without caching) was 165 seconds. Obviously, this was not good enough, so I started investigating NoSQL, where MongoDB quickly became my preferred choice, specifically due to its geo-location features and the fact that it was now powering Foursquare.

Sure enough; with MongoDB, we were able to perform the exact same query with the exact same data in only 0.02 seconds – over 8,000 times faster than MySQL, so with a love for WordPress and an instant obsession with MongoDB, I was quick to register the mongopress domain. What I assumed would be a relatively easy task to build a plugin that could connect WordPress and MongoDB, quickly grew into something of epic proportions, and after digging deeper into both WordPress and MongoDB, I realized that WordPress had been built from the ground-up with SQL and a grand table-schema in mind. It did not take long for the penny to drop, and my mind started working over-time on the possibilities of a CMS that was built from the ground-up to best utilise MongoDB.

With that in mind, we would like to introduce you to MongoPress; where we have taken some of the best features from WordPress, and combined them into our our own lightweight MongoDB-based framework. With an emphasis on security, speed and limitless flexibility; MongoPress has the essential features needed for managing content on the web. We have tried to make as few assumptions as possible, allowing for a truly customised experience. We have tried and will continue trying to only include the absolute essentials in core, and if it could be added as a plugin, it will – from RSS and Comments to more traditional analytics and sitemaps; these will all be optional plugins. Instead, we will be concentrating on core MongoDB capabilities, such as out-of-the-box scaling through support for replica-sets and sharding, as well as geo-location features and GridFS support for media.

What is MongoPress presently NOT…?

MongoPress is NOT recommended for production use and has only be released early as a technology preview.

MongoPress is NOT a fully-loaded all-frills CMS and is lacking a lot of features people have come to expect from WordPress, but as a result, it is also much more flexible and can be easily customised with design, content and administrative templates.

So what can we do with MongoPress 0.1 …?

MongoPress 0.1 includes the following working features:

  • Lightening Fast Reflexes
  • Local / Remote MongoDB Support with Replica-Sets and Sharding
  • Really Simple Installation Wizards / Process
  • Powerful Perma-Trail Functionality
  • WordPress Plugin API (hooks and filters)
  • WordPress Translation Functionality
  • Non-GUI-Based Theme Management
  • Administrative Access to MongoDB Objects
  • Additional Publication View Mode for Editing Objects
  • SHA(256) SALTED Security and Authentication
  • HTML Importation / Content Template Functionality
  • GridFS Media Support for Images and ZIPs (tracking downloads and views)

What did not make it into the initial release…?

The following items did not make it into our 0.1 initial release but are presently scheduled for 0.2:

  • Core GUI for Theme / Plugin Management
  • Ability to Develop Themes in HTML
  • Core Geo-Location Support
  • HTML5 Audio / Video Support for Default Theme

What plugins have we already built…?

The following list are included mu-plugins that are in extremely crude states, but demonstrate existing flexibility that allows the bravest of souls to run in a production environment, as we are for MongoPress itself:

  • Download Counter (with GridFS support)
  • Default Header (with GridFS support)
  • Analytics Plugin (for Google Analytics)

What plugins are at the top of our list…?

The following list are plugins we plan to develop if not already in development when required:

  • Contact Form Plugin
  • Comment Plugin
  • RSS Plugin
  • Sitemap Plugin

How can you help…?

If you think that we might be on to something and want to help-out, please get in touch. If you simply want to show support, let people know about us. Write a post or send a tweet, shout it from the roof-tops if you can. We need to hear from you guys. We need to know that this is something you want, and so the more we hear from you, the better our ability becomes in responding to your needs.

Follow us on Twitter – at @mongopress

Download our nightly-build via SVN – at http://svn.mongopress.org/trunk/

You can keep track of bugs and up-coming features via MongoTrac – at http://trac.mongopress.org