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