 So the part between SQL and NoSQL, a lot of you might have heard what SQL is, a lot of you might have heard what SQL is, so I will give you a brief introduction what SQL and NoSQL is, I will help you understand some concepts around it and then I will work at the end of my talk, you get a clear picture what SQL and NoSQL is and it helps you to make a decision for which database architecture you should use in the next project. So my name is Hershel Agrabal, I am basically a java key developer, I am a computer engineering undergrad at SVIT in India, I am a GitHub Amperage expert at a DAC lead, yeah that's for me, so how I got into database, I started with front end, I came across Firebase, I really like the concept of Firebase, so I read the documentation, I started building a few projects on that and I was reading the documentation, I came across NoSQL, I was very curious to know what NoSQL is because I had heard about SQL from my history and all that thing, so I started working on that and then in college I got introduced to SQL where I learned how, where I learned more things about SQL and then the questions came like why there is so much difference between SQL and NoSQL and which thing I should go for if I am building my next project, so here is what I am going to talk about, so I talk about SQL, for most of the people they think that SQL is a database but that's not right, SQL is not a database, it is a query language, so a language which is used to query the data, that is it drives the data, updates the data or even delete or insert the data, this is how a query for SQL looks like, so select and so on, they are the keywords in the command and the asterisk and the products are the data parameters, so what this query does is this query selects all the data that is present in the product table and gives you the output, so this is only the simple query for SQL but there are other commands also, there are commands which are the data, delete the data, update, even create the table, so SQL stores the data in the form of tables, so tables are the database where all the content is present and within those tables we have fields, now the most important thing about SQL is schema, SQL has a precise schema, so if you want to have a different field for a different record that's not possible, you need to have the same field for all the records or you cannot have the field for only one record and the data in SQL is known as records, so this is an example of a product table where we have the fields for ID named rise and description and below that are the records for that, now if I want to add a new record, let's say if I want to add a pension to this, so I do that simple insert query and I insert the record for this, but now if I want to have a new field for only the record pension, like short description if I want to add short description to a record, that's not possible, so if I want to do that, I need to have the short description data for both and all the other records that I have in particular data, so that was SQL, now let's see what noSQL is, so noSQL basically it's not SQL, it's not relational, a database that is not relational and it stores data more flexibly than columns and rows is basically noSQL data, so noSQL data is various types, these are the main basic types of noSQL data, that's graph store, key value, column store and document database, so graph store data if you are building the next Facebook, like a social media network or if you have road maps or you want to have network to follow this, then the graph store is best for you and the example for that is Neo4j, key value stores, it is simplest form if you know about JSON, JavaScript of the notion, it stores the value in the form of key and value, so that's what a key value like that, it's similar to key value and that is a very famous example for that and if you want to, if you have large data sets and if you want to do real-life analytics for that and the data structure, then you should go for column stores because it helps to optimize the query and Cassandra is very famous for that and MongoDB, a lot of people might have heard MongoDB and you might have used MongoDB, so MongoDB will see how MongoDB stores the data, will see the data structure for that, so we have a database and within those data base we have collections, so we can compare collections with tables in SQL and within those collections we have a document, the document are basically the records, so like if we have an example, so we have an example here, shop is a database and within that we have collections called products and orders and within those we have different documents, in product we have a document for code and something for pen and something like that, even we can have a, even we can have a collection of users for this, so this is the structure of document, price is name, price and description, now if I want to have a new document, if I want to add penchant, now for penchant if I want to have a short description, it's okay I can have a short description only for penchant and not for code, so that is how flexible and no SQL is, this is a query for no SQL, db.products are fine, here products is the data parameter when db and fine are the keywords, so what this way does is it gives you all the data from the product table, now before moving on let's talk about scaling, because whenever we are building an application we always come across scaling, what type of scaling we need and when we need the scaling, so let's understand what scalability actually means, scalability actually means it refers to the capability of a system to handle the growing amount of work, so if a system is scalable, if it can increase the workload and the throughput when additional resources are added, there are basically two types of scaling, vertical scaling, so vertical scaling is like adding resources to an existing system, let's take an example like there is a building, so adding more flows to the building, that's kind of similar to vertical scaling, but vertical scaling comes with limitations, like it becomes costly because every time you need to buy a new hardware and to configure that hardware, your system goes offline for a particular amount of time, so you lose your interest and then every machine has limitations, like a machine cannot be scaled up to a certain limit, like if we take an example of my machine, so I have an 8GB RAM, but I can only scale it up to 16GB, I cannot increase its processing power memory, then there is horizontal scaling, horizontal scaling is like adding more hardware to the existing system and not a particular server, so it's like adding more buildings to the neighborhood, the only limitation we face because horizontal scaling is splitting up data, so if we are using SQL, it becomes difficult to split the data and that's why horizontal scaling is difficult for low SQL, now let's see why you should go with SQL, so schema, if you have structured data and you want to have a tight schema, then you should go with SQL, relations, so if there are a lot of relations, like if you have a table for orders, if you have a table of products and then you have a table of users, so you store only the particular information that you need, like for orders we store the product ID, the user ID and the quantity, so what it does is this also reduces the duplications, so yeah, and fast join, so if you want to join the tables, SQL provides fast join, that was about SQL, now but why, if we want to go to low SQL, why we should go with low SQL, low SQL provides scalability, it can have both vertical and horizontal scaling, there is a simple data model like this one, there is another dynamic schema, so you don't have to have a particular structure for data, and low-intensity high performance are the best features for no SQL, now let's see the examples, like which companies are using SQL and no SQL, so this is booking.com, booking.com uses my SQL, they use it for browsing, reservation managing, pay match, analytics, and in the Intel system too, so what benefit they found with SQL is that they use relational models, so it makes it very convenient for them and easy for them to run complex queries with SQL, then there is Shavan, Shavan is a music streaming service, it's very popular in India, and they have catalogs for more than 75 languages, they use MongoDB, they use MongoDB because features like horizontal scaling, flexible schema, and high availability, this has helped them with tremendous growth, they store users, they store users covert, and then they set highly targeted push notifications, so this is why they go with no SQL because it helps them to do real-time data analysis, so still the question is what you should go with, SQL or no SQL, I don't want any of you to be like this, so you need to before building your project, you need to ask yourself, do you have structured data, do you need a clear schema, and do you use a lot of relations, if the answer for all these questions is yes, then you should go with SQL, but before going to debt, you should also ask this question to yourself, do you need to perform a lot of real-time rights, does scaling really matter to you, and do you need real-time analysis, and if the answer to all these questions is yes, then you should go with no SQL, so let's have a quick overview, SQL has schema and no SQL has schema rest, SQL with SQL you can have relations, with no SQL you can have like very few or no relations, SQL is very difficult to do horizontal scaling, but vertical scaling is possible, with no SQL both horizontal and vertical scaling is possible, and there are huge limitations for read and write queries per second with SQL, and no SQL provides great performance for thousands of read and write queries per second, that's it, thank you, questions?