3

Looks Mezzanine is one of the best Django based CMS. I would like to use it in my project but want to use NoSQL DB. Did some research but could not find a straight answer to it.

Any documents on how to use MongoDB for Mezzanine?

Thanks in advance

user2777473
  • 3,736
  • 5
  • 26
  • 39
  • Without rewriting large part of Mezzanine it is probably impossible (just spend a few minutes looking at [Mezzanine code](https://github.com/stephenmcd/mezzanine)) so if you are looking for out-of-the box solution I don't think you'll find one. Is there any particular reason you want to use MongoDB? – zero323 Oct 24 '13 at 21:09
  • Our project wants to use a CMS to manage document objects, and that's a perfect fit to use some NoSql DB. Also, the structure of those document objects will change dynamically at the early stage and using NoSQL db helps the development a lot. – user2777473 Oct 28 '13 at 13:53
  • 1
    Can I politely suggest that you probably don't need a "NoSQL" solution, and that a relational database will suit your project just fine. – Steve Oct 29 '13 at 03:10

2 Answers2

6

Mezzanine is heavily tied to using a relational database, so what you're trying to do here won't be achievable.

As I mentioned above though, your requirement for using a "NoSQL" database are most likely misguided - no offence!

Steve
  • 1,726
  • 10
  • 16
0

Mezzanine is a CMS very oriented to the traditional way Django manages its databases, and this way is using RDBMS. But NoSQL databases like MongoDB offers advantages when is necesary to work with a distributed in a cluster database with automatic sharding, big volumes of data, fault tolerance and replication is a must. These additional features are added with MongoDB, but ACID -https://en.wikipedia.org/wiki/ACID- requirements and transactional style are severely affected, due mainly to restrictions very well schematized with the CAP theorem (https://en.wikipedia.org/wiki/CAP_theorem). Django (which is the strong basis of Mezzanine) has an ORM designed for multiple RDBMS like MySQL, Postgre, Oracle, etc, and in spite of the fact that Django has ultimate works with MongoDB, Cassandra and other NoSQL databases, does not mean an inmediate compatibility with packages like Mezzanine which are strongly oriented to the traditional Django´s ORM for RDBM. When a CMS requires NoSQL?: When you are going to manage big volumes of content pages (Terabytes) accesed by a big number of registered users (Millions) and a prompt response is required for all of them (think in facebook i.e.) even if the response is not updated. The handicap here is that an update to the database is not inmediate for subsequent requests (which is tolerable for facebook users) and only eventually it will be updated (eventual consistency - https://en.wikipedia.org/wiki/Eventual_consistency ).

CMS working with NoSQL are many, for example: https://www.cmscritic.com/how-nosql-is-disrupting-web-content-management/ Additional packages like Cartridge for Mezzanine are oriented to e-commerce transactions are for sure this is an ACID requirement.

casjorge
  • 241
  • 2
  • 5