What is MongoDB?
MongoDB is a document-oriented NoSQL database used for high volume data storage. Instead of using tables and rows as in the traditional relational databases; MongoDB makes use of collections and documents. Documents consist of key-value pairs, which are the basic unit of data in MongoDB. Collections contain sets of documents and function, which is the equivalent of relational database tables. MongoDB is a database, which came into light around the mid-2000s.
The MongoDB environments are very scalable. Companies across the world have defined clusters with some of them running 100+ nodes with around millions of documents within the database.
Data Modeling in MongoDB
As we have seen from the Introduction section, the data in MongoDB has a flexible schema. Unlike in SQL databases, where you must have a table's schema declared before inserting data, MongoDB's collections do not enforce document structure. This sort of flexibility is what makes MongoDB so powerful.
- What are the needs of the application – Look at the business needs of the application and see what data and the type of data needed for the application. Based on this, ensure that the structure of the document is decided accordingly.
- What are data retrieval patterns – If you foresee a heavy query usage then consider the use of indexes in your data model to improve the efficiency of queries.
- Are frequent inserts, updates and removals happening in the database? Reconsider the use of indexes or incorporate shading if required in your data modeling design to improve the efficiency of your overall MongoDB environment.
The best things
Each database contains collections which in turn contains documents. Each document can be different with a varying number of fields. The size and content of each document can be different from each other.
The document structure is more in line with how developers construct their classes and objects in their respective programming languages. Developers will often say that their classes are not rows and columns but have a clear structure with key-value pairs.
The rows (or documents as called in MongoDB) do not need to have a schema defined beforehand. Instead, the fields can be created on the fly.
The data model available within MongoDB allows you to represent hierarchical relationships, to store arrays, and other more complex structures more easily.