 So in this module, I'll talk about what is NoSQL, why it's important, why it's interesting, why it's useful, why people are using it. So let me go through some of the brief history or the background. I will just give some background. During the last 15 years, there has been a tremendous revolution and there has been a tremendous explosion in terms of the usage of the worldwide web, in terms of the social network, Facebook, Twitter, and the list goes on. And there is a tremendous amount of messages being exchanged over the web, over the internet. And there is a tremendous amount of access to those messages, requirements to access those messages. Those messages could be what different people had for dinner, where they are going for dinner, their feedback about different products. Those messages could be, for example, the diagnosis of medical results and the list goes on. So we see that the data is generated in the form of text very frequently, very fast. There is a tremendous amount of data being generated and that is not very structured also, but the people are very keen and very interested in using and extracting information out of that data. So the traditional approach of the database architects sitting behind doors for months or a year and developing and designing that excellent schema that is not going to work because the time is not there to do all of those things. So it means that the traditional systems and the traditional approaches are not going to work. The good news is that there are applications, there are solutions in the market out which can be used like NoSQL to answer these questions, to attend to these requirements, to come up with the solutions. And the kind of bad news in double quotes is that people are not aware of these solutions. So that is why NoSQL is included as part of this course and we will be spending considerable time on NoSQL in this course also. Now if you look at it over here, the common features. What are the common features of NoSQL? First of all, NoSQL is schema free. You can just get the data and place it into a NoSQL database. You don't have to make the schema and spend time. You can do it later. You can just put the data in your NoSQL database. NoSQL is not necessarily required to be relational. It is not relational. It means that you don't have to have tables in which you have to establish the relations because you see when we talk about the tweets, when we talk about the comments of the people, this that traditional aspect is not there. That is not there. So it is non-relational. It is schema free. So there is hardly any SQL structured query language. The third point is the strength of NoSQL or the core difference of NoSQL as compared to other solutions is that the NoSQL database does not require specialized hardware. Specialized hardware costs a bundle of money. So it can run on commodity hardware, off the shelf hardware. You can combine that hardware and you can scale as the requirement, as the load, as the size of the project increases. And finally, the fourth core aspect of NoSQL is that it is highly distributable. It means when the load comes, it is distributed across the servers. Now managing different types of data, let me describe NoSQL very, very secretly or very, very briefly and precisely. NoSQL, right, is not a layer over the relational model. NoSQL is an entirely different beast. NoSQL caters to four different types of data. It caters to the triples. It caters to the columnar data. It caters to the key data and the list goes on. It's very different from the relational. Then the other difference is that or other aspect of NoSQL is that it is selectively consistent. It means that the asset property is not religiously followed. I will explain this in the next slide. It means that if there is tweet in New Zealand and Singapore, they are not going to be available immediately in the United States, selective consistency. And of course, development using NoSQL is very fast and the response is also very good. So let me conclude with MongoDB. I'll talk more about MongoDB. So MongoDB is a one representative or the postal child, so to call of NoSQL. But people try to use MongoDB for the relational purpose. It is not relational. And finally, I'll talk about the effective indexing in MongoDB. Say, for example, I would like to know the feedback of the users about a certain recipe of a certain item, food item, say for example, my favorite is lamb chops. So I can create an index using the primary key, but I am looking at more things. For example, I would like to know the recipe about the lamb chop, which has vinegar, but which does not have soya sauce. So I need to have secondary indexes which are supported by MongoDB. And what that secondary index would have, it would have the ingredient as the key for the searching. It would have the recipe and it would have no soya sauce. So you see that this results in very powerful indexing. And as of today, there are about 200 products out there which claim to be NoSQL. And one of them is MongoDB, which has been very popular and kind of representative of the NoSQL paradigm. And before I conclude, one another aspect of NoSQL is that it offers four different types of data to be stored. So there is going to be one application, one type, which will suit your particular and peculiar needs. That's about it.