MongoDB is Object-Oriented, simple, dynamic and scalable NoSQL database. It is based on the NoSQL document store model, in which data objects are stored as separate documents inside a collection instead of storing the data into columns and rows of a traditional relational database. The motivation of MongoDB is to implement a data store that provides high performance, high availability, and automatic scaling. MongoDB is an extremely simple and easy Install/Implement. The core of MongoDB storage is documents and it’s stored as JSON or BSON objects. General distributions of MongoDB support Windows, Linux, Mac OS X, and Solaris
Terminology and Concepts
|Joining||Linking & Embedding|
|Partition||Sharding (Range Partition)|
Choice of database is always a decision based pros and cons.
- Document oriented
- High performance
- High availability -Replication
- High scalability – Sharding
- Dynamic- No Rigid Schema.
- Flexible – field addition/deletion have less or no impact on the application
- Heterogeneous Data
- No Joins
- Data Representation in JSON or BSON
- Geospatial support
- Easy Integration with BigData Hadoop
- Document-based query language that’s nearly as powerful as SQL
- Cloud distributions such as AWS, Microsoft, RedHat,dotCloud and SoftLayer etc:-. In fact, MongoDB is built for the cloud. Its native scale-out architecture, enabled by ‘sharding,’ aligns well with the horizontal scaling and agility afforded by cloud computing.
- A downside of NoSQL is that most solutions are not as strong in ACID (Atomic, Consistency, Isolation, Durability) as in the more well-established RDBMS systems.
- Complex transaction
- No function or Stored Procedure exists where you can bind the logic
- Ecommerce product catalog
- Blogs and Content Management
- Real-time analytics and high-speed logging, caching and high scalability
- Configuration Management
- Maintain location based data – Geospatial data
- Mobile and Social networking sites
- Evolving data requirements
- Loosely coupled objectives – the design may change by over time
Not good for:
- Highly transactional system and data model is designed upfront
- Tightly coupled systems
Despite the traditional relational DB world, a new trend is emerging which is called NoSQL. Its really hard to define NoSQL. You will get lot of information, opinions on what NoSQL is all about. This is just my understanding and research on NoSQL.
Its all about
- Open source,
- Cluster friendly,
- Schema Independent,
- No Join,
- Humongous Volume of data,
- Easy Development,
- Easy Administration
and other factor such as License cost, Business Process, Organization decision plays a major role in opting for this aggregated brand of the NoSQL umbrella but relational DB’s are still very good for various scenarios and answers all our long lasting questions.
NoSQL, without ACID it is very difficult to write reliable software though it follows CAP theorem , it is clear that without ACID, the developers have to spent a significant fraction of their time building extremely complex and error-prone systems.Also, this is totally depend on business decision and use cases.
There is lot of new development and research is taking place to come out with a stable NoSQL products.There is always pros and Cons while choosing the database product but its all driven by business case, cost involved and decision taken at the management level.
There is a new mindset in my organization to try and go for NoSQL products thinking of lower expense and maintenance overhead. Most of the time during Project life cycle process may give us an insight about success or failure of the implementation.
The problem is that when you had a tremendous amount of data scattered across multiple systems it’s nearly impossible to keep SQL and ACID in this scenario. But as technology grows and matures, they are working on implementing and providing various features to provide data consistency and integrity. Also, adding SQL support to underlying data layer gives an flexibility to query the data.This is the only reason and hard to say it’s a schema-less design as it’s indirectly bound to schema.
NoSQL, the Non-Relational db is classified under Key-Value pair, Document Oriented type, Column family and Graph.