MongoDB is an open source database and was developed by 10gen. It is an Agile database that allows schemas to change quickly as applications evolve. MongoDB provides scalability, high performance and availability.
Now in this evolving world, we need to have new data types, new architecture and the rate of generation is very fast. So MongoDB is designed to tackle these evolutions.
MongoDB is a document oriented database which means that it is designed for storing, retrieving, and manipulating the data. Document databases can have structured, semi-structured, and large records. It is not necessary that all the records have the same structure but it is necessary that all records have the unique element which is useful to access that record.
Some of the features of MongoDB
- MongoDB is a NoSQL database that uses JSON format for data storing.
- Dynamic Schema -MongoDB supports dynamic schemas. In other words, we need not define the schema before the insertion of data. We can change the schema of the database dynamically. A dynamic schema supports fluent polymorphism.
- Embedded Data Model - MongoDb uses an embedded data model. In other words, we can define a document as a key/value pair in another document.
- Use of Index - We can define an index on any attributes of a MongoDB records that increase the speed of data fetching.
- Rich Query - MongoDb supports rich query to fetch data from the database.
- Automatic Scaling - MongoDB uses a Scaling Out approach. This is also known as Horizontal scaling. In the Scaling Out approach data is distributed across clusters.
- Data Sharding - MongoDB spreads data across servers without effecting the performance of the application. It removes the dependency on a single server. The database never goes offline. In other words it provides 24 x 365 services.
- Mirroring - We can set mirrors across a Local Area Network (LAN) and a Wide Area Network (WAN). That makes it easily scalable.
- Supports Many Language - MongoDB supports many languages including C, C++, Ruby, C#, Perl, PHP, Python, Java, JavaScript, Erlang and Haskell.
- Replication - MongoDB supports data replication that has the data within a system geo-distributed, preferably using a non-interactive, reliable process.
- Dynamic Query - MongoDB supports dynamic query for documents as a document-based query language that is nearly as powerful as, or more powerful than, SQL. Mapping Not Required - Conversion or mapping of application objects to database objects isn't required.
- MongoDB supports Java-Script for server-side execution. MongoDB uses JSON format for data storage and retrieval at the client side, in other words it allows a developer to use a single programming language for both client-side and server-side code.
- MongoDB supports un-structured or semi-structured data.
The image below will give you a clue how can we relate our RDBMS and MongoDB