What is this 'NoSQL'? If you already have heard of NoSQL, then you'll probably might have heard of MongoDB as well. Why is that? Because these two terms are kind of interrelated with each other, as MongoDB is the most widely used application of the NoSQL technology. But, before peeping our heads into MongoDB, lets have a look at what NoSQL is. 
To understand about NoSQL, we should have at least a basic understanding about SQL. SQL stands for Structured Query Language. If you ever had worked with databases ,specifically relational databases , then you might already have had hands on experience in SQL. A relational database is a data store where data is organized into relations or tables. Basically SQL is used to manage and query data from relational databases. 
As the name itself suggest NoSQL , means 'non SQL' or 'non relational'. A NoSQL database allows us to store and retrieve data from a data store which is modeled in means other than the tabular representation used in relational databases. NoSQL became increasingly popular in the early 21st century , with its use in popular companies like Facebook, Google and Amazon.com . NoSQL databases were mainly developed to overcome the clustering/horizontal scaling problem encountered  by relational databases. Several other properties of NoSQL databases contributed to its popularity and wide usage:
- Schema free
- Distributed
- Easy replication
- Simple
- Finer control over availability
- Open source
Some of the above mentioned features are very useful in some applications, while at the same time it might be a disadvantage in certain applications. For an example, being schema free makes NoSQL databases simple and easy to use, however at sometimes this might cause issues in consistency and integrity of data. 
It's a widely known fact that NoSQL databases are "eventually consistent". What does the adjective "eventually" imply? The actual meaning of the phrase "eventually consistent" means that these databases are consistent typically within milliseconds, which means that there is a very small chance that a read from the database might return inaccurate updates. Actually many NoSQL databases compromise consistency in favor of  availability, partition tolerance and speed. 
A major disadvantage of NoSQL is that it does not support ACID (Atomicity, Consistency, Isolation, Durability) transactions. Despite all the advantages of NoSQL databases ,the banking domain is still reluctant to use these databases for this reason. But, currently developers are working on improving the ability of NoSQL databases to support transactions, therefor soon this won't be a problem for NoSQL.
Now let's have a quick look at the main categories of NoSQL databases along with examples :
- Key-Value ex: Redis, Riak, Memcached
- Document ex: MongoDB
- Column-family ex : Cassandra
- Graph ex: Neo4j

I hope that the above information helped you to get a clear idea about NoSQL databases . As I mentioned in the introductory paragraph, MongoDB is the most widely used NoSQL DB. So its useful to know how to work with MongoDB . In my next post I'll meet you all with how get hands on experience in working with MongoDB.



Comments
Post a Comment