MongoDB (derived from humongous) is a cross-platform, high performance, high availability, and easy scalability document-oriented database. MongoDB is released under a released under a mix of the GNU Affero General Public License and the Apache License.
Classified as a NoSQL database, MongoDB leaves the traditional table-based relational database structure in favor of JSON- or XML-like documents with dynamic schemas. MongoDB calls the format BSON (Binary JSON), and this dynamic format makes the integration of data and applications easier and faster.
What is NoSQL?
NoSQL (originally referring to “non SQL” or “non relational”) databases provide a mechanism for storage and retrieval of data modeled in means other than the tabular relations used in relational databases.
NoSQL technology was pioneered by leading internet companies — including Google, Facebook, Amazon, and LinkedIn — to overcome the limitations of 40-year-old relational database technology for use with modern web applications.
Today, enterprises are adopting NoSQL for a growing number of use cases, a choice that is driven by four interrelated mega-trends: Big Users, Big Data, the Internet of Things, and Cloud Computing.
Benefits of NoSQL
Large numbers of users combined with the dynamic nature of usage patterns is driving the need for more easily scalable database technology. With relational technologies, many application developers find it difficult, or even impossible, to get the dynamic scalability they need. This is also true when it comes to maintaining the performance levels users demand.
When compared to relational databases that access data through SQL Joins, NoSQL databases are highly scalable and provide superior performance. Also, their data model addresses several issues that the relational model is not designed to address:
- Large volumes of structured, semi-structured, and unstructured data
- Agile sprints, quick iteration, and frequent code pushes
- Object-oriented programming that is easy to use and flexible
- Efficient, scale-out architecture instead of expensive, monolithic architecture
- Can store any type of data: structured, semi-structured and polymorphic.
- Huge performance in data process and scalability.
- Is able to process the large amount of information that we generate (millions of users per application, social networks growing steadily, Internet of Things, cloud computing, etc).
- Supports the requirements of the current applications (millions of users, thousands of requests per second, etc).
- Provides ACID properties at the document level as in the case of relational databases.
- Empowers enterprises to be more agile growing quickly, create new type of applications/products, improve customer experience, accelerate time to market and reduce costs.
- Supports replica sets; in other words, a fail-over mechanism is automatically handled. If the primary server goes down, the secondary server becomes the primary automatically, without any human intervention.
- Supports the common authentication mechanisms, such as LDAP, AD, and certificates. Users can connect to MongoDB over SSL and the data can be encrypted.
- It is a document oriented database. This means that in only one document is capable of store all the information required for your product. In the fields of the document we can allocate any type of information including arrays and embedded documents. This allows documents to have a very rich and flexible structure.
- Yo can change your schema design on-the-fly, leading to much faster development. This is possible because we can do it from the code side, without the need to spending our time in administrative database tasks, as it would be in relational databases.
- Developers have all the same functionalities they have in their RDBMS (like secondary indexes, a full query language, etc).
MongoDB enables horizontal scalability by using a technique called auto-sharding. Sharding is a type of database partitioning that separates very large databases the into smaller, faster, more easily managed parts called data shards. The word shard means a small part of a whole. Data is automatically balanced among servers in the a cluster, allowing it to scale horizontally. On the other hand, Relational Database Systems scale vertically.
Given all these advantages, MongoDB is definitely a cost-effective solution for document- and object-based datastores. It is also very useful in creating applications like bug tracking, discussion forums, advertisements, and similar scenarios.
However, it has some drawbacks that makes NoSQL databases fall short for some scenarios where relational database are best suited. For instance, SQL joins are not possible, a big plus of relational DBs. That’s why choosing one over the other requires proper analysis before making a decision. Each one excels at some scenarios and might be ill-suited for others.