Saturday 13 May 2017

Choosing MongoDB - an awesome NoSQL database!!!!





MongoDB, a NoSQL database, is leading the market with many commendable features to its credit. These include exemplary features of MongoDB such as JSON or BSON Data Storage, Power Performance, and Horizontal Scaling. These features come together to create the most powerful database that can monitor, manage, and process huge volume of data in a rather systematic way.     

Lets see first of all NoSQL databases popularity trend which is as shown in the following chart :        

                                                                                  


From the above chart , MongoDB  clearly a winner in terms of popularity and its rank among top 5 DBMS  of the world and have DB-Engine score more than 300 which is an outstanding score for a DBMS.


MongoDB as compared to traditional RDBMS have some very unique features which are vital in the web applications development and its growth is many fold day by day and its user base is getting strong with the strong community of user . Making it a fastest growing NoSQL DB for the development world. 

Best MongoDB features are:

Pros : 
  • Schema less or Dynamic schemas which makes it very flexible and highly helpful in solution of highly complex problem. 
  • Structure of a single object is clear
  • No complex joins
  • Deep query-ability
  • Easy tuning.
  • Ease of scale-out.
  • Conversion / mapping of application objects to database objects not needed.
  • Uses internal memory for storing the (windowed) working set, enabling faster access of data.
  • Document Oriented and NoSQL database.
  • Supports Aggregation
  • Uses JSON like  BSON format which is binary JSON
  • Sharding (Helps in Horizontal Scalability)
  • Supports Ad Hoc Queries
  • Indexing (Any field in MongoDB can be indexed)
  • MongoDB Replica Set (Provides high availability)
  • Supports Multiple Storage Engines
  • Capped Collection
  • High Availability
  • Load Balancing
  • Easy Scalability
  • Powerful Security
  • Automatic Fail-over
  • Advanced User Management
  • Powerful query engine
  • Geospatial support with the geospatial indexing capability - very useful feature for those product which uses geo location to build their logic . Many application can be made using this feature.
  • High Performance
  • Can store big files without changing your data structure - GridFS is main core for managing files and wonderfully handle the big size files.
  • Has Text search integrated facility also helpful is searching 
  • Map Reduce - One of the key feature increasing the capability of processing of large volumes data set into aggregated result set. 
  • Master Slave Replication  - In case of any failure of Master  Slave becomes the Master and Master becomes Slave. So a great fail over support in it.
  • Data Center Awareness - MongoDB provides a number of features that allow application developers and database administrators to customize the behaviors of a sharded cluster or replica set deployment so that MongoDB may be more  "data center aware" or allow operational  and location-based separation.
  • Replica Sets Distributed Across Two or More Data Centers 
  • Easy Deployment 
  • Simple to maintain and not necessary to have DBA for it.
  • Very useful in the case where  high write load is more 

Cons :

  • A downside of NoSQL is that most solutions are not as strongly ACID-compliant (Atomic, Consistency, Isolation, Durability) as the more well-established RDBMS systems.
  • Complex transaction
  • No function or stored procedure exists where you can bind the logic

Who are using MongoDB

Currently more than 4500 customers() are using mongo  and some of them are : 

Expedia , MetLife , Cisco, Facebook , Adobe, IBM, SAP, Twitter , Forbes , BusinessInsider and many more big names of the world.

One can see through the complete list of users link 

Good For:

  • E-commerce product catalog.
  • Blogs and content management.
  • Real-time analytics and high-speed logging, caching, and high scalability.
  • Configuration management.
  • Maintaining location-based data — Geospatial data.
  • Mobile and social networking sites.
  • Evolving data requirements.
  • Loosely coupled objectives — the design may change by over time.

Not so Good For:

  • Highly transactional systems or where the data model is designed up front.
  • Tightly coupled systems
  • Multi-Object Transactions: MongoDB only supports ACID transactions for a single document.
  • SQL: SQL is well-known and a lot of people know how to write very complex queries to do lots of things. This knowledge is transferrable across a lot of implementations where MongoDB's queries language are specific to it.
  • Strong ACID guarantees: MongoDB allows for things like inconsistent reads which is fine in some applications, but not in all.
  • Traditional BI: A lot of very powerful tools exist that allow for OLAP and other strong BI applications and those run against traditional SQL database.

Enjoy the Mongo!!!!

No comments:

Post a Comment