MongoDB -- the "Honey Badger" of NoSQL
Overall Satisfaction with MongoDB
We are using MongoDB as the backbone of our latest product offering, the Project Portal (v0.9 released Jan 2016). This is a Saas offering that we essentially white-label to our OEM clients for their customers and end users. MongoDB offers a robust, scalable, simple-to-get-started solution for the persistence layer of our Rails app.
Pros
- As a software architect, I like the ease with which MongoDB avoids the typical "impedance mismatch" between traditional SQL and the object-oriented problem domain classes. MongoDB (via mongoid) in our Rails app is like a "hot knife through butter." It is much more akin to an OODBMS than anything else.
- MongoDB is easy to use throughout product development as it is the "honey badger" of databases. As your product rapidly goes from idea to startup to scaling, MongoDB makes it easier than any SQL database I ever used. You spend more time building your solution, and less time worrying about feeding, nurturing, and migrating the SQL beast.
- The ease with which you can spin up replica sets is amazing. No more excuses that you could not build a robust persistence layer. (Especially if you tack on services like MongoDB cloud offerings.)
- I also take advantage of the geo-aware spatial indexing. To be able to geocode users, logins, problem domain classes (entities with an address), and do geo-aware queries -- like find me all of the X within Y miles of point Z. Booyah!
Cons
- I love the idea of Map-Reduce native support in MongoDB. Admittedly I have not used it as much as I would like -- it always seems to trip me up.
- Recent additions to the aggregation queries have helped reduce (no pun intended) my need to better wield the weapon that is Map-Reduce.
- Due to MongoDB's honey badger approach to persistence, it allows our teams to run fast at implementing our web apps.
- MongoDB is easy to administer -- especially because we use MongoDB Cloud to backup and monitoring.
- Admittedly we are not storing gazillions of documents (only 15GB), and we are not "pushing the envelope" on performance, so we do not require any database admins.
I only briefly looked at CouchDB after I already began using MongoDB. Naturally, I have used many relational SQL databases.
Since MongoDB did everything I needed, I saw no need to look around for alternatives.
(Okay, full disclosure. I am an "association" vs "inheritance" object-oriented snob. In Rails, ActiveRecord implements persistence via inheritance for SQL databases. The MongoDB gems like mongoid and mongomapper add persistance via association. Boom!)
Since MongoDB did everything I needed, I saw no need to look around for alternatives.
(Okay, full disclosure. I am an "association" vs "inheritance" object-oriented snob. In Rails, ActiveRecord implements persistence via inheritance for SQL databases. The MongoDB gems like mongoid and mongomapper add persistance via association. Boom!)
Comments
Please log in to join the conversation