Wednesday, September 07, 2011

Why NoSQL is in fashion?

Couple of years back NoSQL was relatively unheard term. It has become a new buzzword in town, catching people's imagination. Almost all big daddies of Internet (Google, Facebook, Yahoo, Twitter, Amazon, Linked-in etc.) are using NoSQL at massive scale and many of them have their own NoSQL products. Every month there is a launch of new NoSQL product catering to some specific use cases / requirements. So what are the reasons behind NoSQL's rise to popularity?

Background

RDBMS and SQL has ruled the world for last 3 decades. They were (are) the defacto standard for storing business data. In fact there was no alternative to RDBMS and SQL combination. When RDBMS were developed the disk space was scarce, hence a lot of thought has gone around saving precious disk space. Development in hardware technologies have made available literally unlimited storage space at lower prices. Evolution of Internet in last decade has paved way for altogether different kind of applications and use cases, which were never thought earlier. Web2 applications (say social networking) have entirely different requirements than typical enterprise applications. Other than that Internet has changed the way application developers think about the data and its usage & storage.

Requirement

Nowadays enormous amount of data is being produced everyday and the rate at which data is produced is also increasing. Data size is so huge that organizations spread it across data center as it does not fit in a single rack or data center. Though data availability is also an equally important factor in using multiple data centers for storage. Applications have to available 24x7 no matter what. Data has to survive the data center failure as well, forget about failure of a disk. Instead of archiving data, Facebook type of applications keep it online forever.

Social networking sites are coming up with new features quite frequently and sometimes rolling back them. At times their new features were never thought about earlier. They don't want to be confined by the schema constraints of RDBMS which is quite difficult (though not impossible) to change. Support for evolving schema has become a necessity and NoSQL solutions are a right fit there instead of RDBMS.

Data size, flexible schema and availability are the 3 key factors where traditional RDBMS do not perform well after a certain limit.

Thought Process

Web2 applications has changed how people think about application architecture. It is an altogether different thought process then what it was few years back.

While designing an enterprise application we used to think about "how to store the data" but today the primary thought is "how we will use the data". This is a paradigm shift. Data storage is designed based on how that is going to be used, leading to optimized performance for a given requirement at times at the cost of flexibility.

"Referencing" entities was a wonderful feature in RDBMS but for large scale web 2 application that does not matter at all. For them instead of referencing "embedding" is the killer feature. Storing related data (say personal detail and address) together makes sense as they don't have any meaning independently. This is similar to denormalization in RDBMS.

For many features of web 2 applications ACID transactions are also not a primary requirement. Say if a tweet does not gets published many users won't mind to type that again and hit the enter button as long as that does not happen frequently. If avoiding ACID transactions increases the throughput many fold for not so critical features, what else you want :-). It is similar to old MySQL though with much larger data-set than what MySQL can support.

Conclusion

There are several use cases where NoSQL perform much better and it makes perfect sense to use NoSQL instead of trying to scale the RDBMS by using expensive methods. RDBMS’s are really good at doing what they do, which is storing flat, relational, tabular data in a consistent manner and getting wonderful reports out of that data. They still remain the best solution for storing relational data.While NoSQL databases are good at performance, availability, schema-less persistent etc., which has become a basic requirement for today's applications. Support for these features is the main reason for meteoric rise to fame of the NoSQL.

19 Comments:

Anonymous said...

Sorry, but your logic is flawed. 99% of the actual businesses will absolutely need a good level of ACID-ness. Saying things like "so what if my data gets lost" is nonsense in almost every case. As that famous "Mongo is web scale" cartoon said, if you don't care about your data, just send it to /dev/null.

Vinod Singh said...

@veggen,

What you are saying is correct. If ACID is must for the use case then NoSQL is not the right tool.

RDBMS and NoSQL are complimentary technologies. It is about picking right tool and using the right technology for the task at hand. One size does not fit all.

Oliveira said...

That is partially the reason, the other is that Nosql is simpler.

Programming in an object oriented way and then persisting your data in relational databases introduces huge complexity.

Nowadays as problems are scaling massively in abstraction, simpler is king as we can't introduct complexity such as rdbms freely in out lifes without some overwhelming evidence of its benefits compared simpler more direct approaches.

Luca Garulli said...

What about a NoSQL product that supports ACID Transactions and SQL? http://www.orientechnologies.com

DanyelLawson said...

hogwash! Learn a little SQL before you talk about the simpler NoSQL solutions. They are not simpler. They are much more complex and have no standardization. The name NoSQL says it all. People who are scared of learning SQL are jumping through hoops to learn these fads when it is much easier to learn a little SQL.
This all started with the memcache fad. An APE for people afraid to learn how to how to program a simple cache with the ability to communicate across processes.
Personally I use sqlite memory and file databases to solve this problem using SQL. Avoiding the sucker bet of learning a product instead of a skill.
Just my two cents.

rachel said...

thanks, it is a formative article

Ramya said...

Nice blog, it’s so knowledgeable, informative, and good looking site. I appreciate your hard work. Good job. Thank you for this wonderful sharing with us. Keep Sharing.
DevOps Training in Chennai

DevOps Online Training in Chennai

DevOps Training in Bangalore

DevOps Training in Hyderabad

DevOps Training in Coimbatore

DevOps Training

DevOps Online Training

Priyanka said...

Attend The Data Analytics Courses From ExcelR. Practical Data Analytics Courses Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analytics Courses.
Data Analytics Courses

priyanka said...

Amazing Article ! I would like to thank you for the efforts you had made for writing this awesome article. This article inspired me to read more. keep it up.
Correlation vs Covariance
Simple Linear Regression
data science interview questions
KNN Algorithm
Logistic Regression explained

arshiya said...

Great information, nice to read your blog. Keep updating.
keyword stuffing seo
how to make career in artificial intelligence
angular js plugins
what is rpa technology
rpa applications
angularjs interview questions and answers

Unknown said...

Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.Data Analytics Course

data scientist said...

Highly appreciable regarding the uniqueness of the content. This perhaps makes the readers feels excited to get stick to the subject. Certainly, the learners would thank the blogger to come up with the innovative content which keeps the readers to be up to date to stand by the competition. Once again nice blog keep it up and keep sharing the content as always.
Data Science training

Deekshitha said...

Informative blog
Data Science Course

donaldrsimonn said...

Online football betting i99club, one of the world's leading online gambling sites, เว็บแทงบอล provides the best prices in football betting.


Ufabet1688 online betting website ufabet is a 100% legal website with all licenses.


ufa football betting, casino, slots, lottery, direct website 1688, stable financial, 100% UFABET168.


Fan wreath shop with free delivery, พวงหรีด with pictures before-after sending with receipt.


Sticking to the COVID-19 situation: โควิด Arekorenavi.info.


Online Baccarat FOXZ24 Easy to apply, fast, บาคาร่า deposit-withdraw 10 seconds with the system.

donaldrsimonn said...

FOXZ88.NET online casino website คาสิโนออนไลน์ Global standard 2020-2021.


Ufabet betting online gambling reminiscent of UFASCR.COM Baccarat.


UFABET football betting website, the big brother of all ufa networks, UFADNA, with an update The first modern system in 2021.


Web football i99PRO online lottery เว็บบอล casino apply today for free 5000 bonus.


Kardinal Stick Siam - relx a great promotion. Express delivery in 3 hours.


Online Marketing Company By the way we can make your website. SEO Reach more customers directly to your business group. Grow your sales.

Priya Rathod said...

I am happy to visit here. Thanks to my friend who told me about this webpage, this blog is really awesome
Data Science Training in Hyderabad
Data Science Course in Hyderabad

Priya Rathod said...

This is a great inspiring article. I am pretty much pleased with your good work. You put really very helpful information.
Python Training in Hyderabad
Python Course in Hyderabad

Priya Rathod said...

This is a great inspiring article. I am pretty much pleased with your good work. You put really very helpful information.
Python Training in Hyderabad
Python Course in Hyderabad

data science said...

I was just examining through the web looking for certain information and ran over your blog.It shows how well you understand this subject. Bookmarked this page, will return for extra. data science course in vadodara