What are NoSQL databases?
What are NoSQL databases?
Do you know how many users are registered with Facebook? The number must be in millions. Now millions of users are connected with many other users (Facebook Friends) and there are exchanges of billions of posts and messages among them. There are millions of users online concurrently accessing Facebook. Where do you think Facebook would be storing its data ?
Okay, let us talk about something else. Amazon online store lists millions of products. Every product is different from one another. Some products have size and weight, some have some technical feature; some have specific type of ingredients and what not, etc.
Each product is listed in one or more categories out of hundreds/thousands of categories available. Also, customers can search for these products, view their details, check reviews on them or may even ask some questions related to it. Customer may be prime, non-prime or a guest customer. Where do you think Amazon would be storing its data ?
Both the above examples deal with enormous, enormous (I purposely repeated the word) data, which you generally refer to as Bigdata. There are many other applications around deal with Bigdata such as Google Mail, Google Earth, Ebay, LinkedIn etc. you that
Whenever Bigdata is to be processed, we cannot bind the data in a specific structure as there is no single standardized structure possible that could represent such vast amount of data. And our idea of databases (that we have learnt so far) revolves around databases with data stored in structured schema with tables having rows and columns.
These traditional databases have SQL as their query language, hence they are known as SQL databases e.g., MySQL is an SQL database. SQL databases have a schema i.e., the skeleton structure that represents the logical view of the database in teams of tables with specific columns, relationships between tables, indexes, and other database elements.
On the contrary NoSQL databases (Not Only NoSQL databases) do not enforce a schema. The NoSQL databases can be structured, totally unstructured or semi-structured. NoSQL databases use different storage mechanisms based on the needs of the applications.
NoSQL databases may store data in key: value pairs or in the form a graph with interconnected data or as column store (a column storing one type of data) or as collections of documents. Do not worry if you do not understand it right now. It will become clear to you in coming lines.
In all the above mentioned examples, can you think of any single structure which may b suitable for any database? In fact, in many web scale applications, data is totally unstructured. Thus, with all these things in play, traditional relational databases are just not that sufficient and efficient to cater to these diverse needs. And hence NoSQL databases were developed to:
- provide support to thousands to millions of concurrent users of modern applications (such as Facebook, Amazon Online store, Google Earth etc.
- deliver very fast response time to globally distributed users.
- handle all types of data without any boundation of structure i.e., unstructured data or semi-structured data etc.
- provide rapid adaptability to fast changing requirements with frequent updates and new features.
- provide an always on performance, i.e., no down time.