Thursday, March 06, 2014

Evaluating NoSQL databases - MongoDB

Introduction

MongoDB is undoubtedly one of the most popular document-oriented databases.  It brings to the table the powerful queryability of relational database and distributed nature of NoSQL databases like HBase or Cassandra.   We will see in this post that MongoDB provides a sophisticated set of unique features and you can decide how it meet your needs.

Key Features 
  • High Availability through replicated servers and automatic master failover
  • ACID compliance at single document level including nested documents
  • Scalability is achieved through automatic sharding 
  • Provides a distributed filesystem known as GridFS and can be accessed from the command line
  • Built-in functions and UDFs are written using JavaScript
  • Provides in built support for Map/Reduce/Finalize
Administration
  • Provides an admin shell for administrative tasks
  • There is an UI for Administration through MongoDB Management Service (Third Party Service)
Migration
  • Migration of a system (application) from RDBMS to MongoDB requires complete redesign and refactoring of code not just switching of drivers.   Please see the Drivers section for supported integration interfaces.
Time-to-market
  • With a straightforward installation and administration model it has a very fast time-to-market.  It is better than HBase
Drivers
  • Drivers are available for Java,  C, C++, Erlang, C#, Perl, Scala, Ruby, Phython, PHP
Community Support
  • MongoDB's huge installation base is expanding very rapidly.
  • Sources of support are listed here
Cost
  • Since HBase is opens-source practically you don't have to spend anything for the product.   But there is talent and infrastructural costs
  • Runs on commodity hardware so the cost is reasonable
  • Vendors offer professional support which varies based on your needs
Prominent Users
  • SAP, MetLife, eBay, MTV,  SourceForge and many others use MongoDB in their production environments
Security
  • Control access to MongoDB instances using authentication and authorization
  • Controls access to sharded clusters with key files
Supported Operation Systems
  • Windows, Linux, Mac OS X, Solaris
Resources
Conclusion

MongoDB is widely adopted NoSQL database which can be used from mid-to-huge data volume requirements unlike HBase and other databases which are suited for huge volume of data.  It provides a familiar programming paradigm with JavaScript and provides Drivers for popular languages which makes it a convenient choice.

No comments:

Disqus for techtalk