NoSQL (Not Only SQL) is an approach to data management and database design that is useful for very large sets of distributed data. It is a whole new way of thinking about a database.
The reason why NoSQL has been so popular the last few years is because, when a relational database grows out of one server, it is no longer that easy to use it. In other words, they don’t scale out very well in a distributed system. All of the big companys have lots of data and store the data in distributed systems for several reasons. It could be that the data doesn’t fit on one server, or there are requirements for high availability.
SQL (Structured Query Language):
- designed for managing data held in a relational database management system (RDBMS).
- a relational database is a set of tables containing data fitted into predefined categories.
- each table contains one or more data categories in columns.
- each row contains a unique instance of data for the categories defined by the columns.
- user can access data from the database without knowing the structure of the database table.
- scalability: Users have to scale relational database on powerful servers that are expensive and difficult to handle. To scale relational database it has to be distributed on to multiple servers. Handling tables across different servers is a chaos.
- complexity: In SQL server’s data has to fit into tables anyhow. If your data doesn’t fit into tables, then you need to design your database structure that will be complex and again difficult to handle.
NoSQL (Not Only SQL):
- about big data: managing large volumes of data, they scale horizontally.
- easier scalability through support for Map Reduce.
- not a relational database: that means table-les, they are easier to manage and they provide a higher level of flexibility with newer data models.
- no schema required: Data can be inserted in a NoSQL database without first defining a schema. the format of the data can be changed at any time, without application disruption, that means more business flexibility.
- auto elasticity: NoSQL automatically spreads your data onto multiple servers without requiring application assistance. Servers can be added or removed from the data layer without application downtime.
- doesn’t conform to ACID properties: ACID (Atomicity, Consistency, Isolation, Durability).
NoSQL and SQL databases solve different problems.NoSQL can process large amounts of structured and unstructured data. SQL can represent complex relationships between data and process complex queries.