What is the Difference Between SQL and NoSQL
SQL vs NoSQL: SQL Databases was initially developed at IBM in 1970 to store Structured data in the Tabular relations, SQL is primarily referred as Relational Databases whereas NoSQL Databases are referred to as Non-Relational Databases that store and retrieve the data in Key-Value pair, Wide Columns, Graph and Document.
SQL | NoSQL |
SQL Databases are relational Databases | NoSQL databases are non-relational Databases |
SQL Databases uses Structured Query Language and it has its Predefined Schema | NoSQL have Dynamic Schema |
Data is stored in Tables | Data stored in Key-Value, Wide Columns, Graph and Documents |
SQL Databases are Vertically Scalable | NoSQL databases are Horizontally Scalable |
SQL Databases follows ACID Properties (Atomicity, Consistency, Isolation & Durability) | NoSQL Databases follows Brewers CAP theorem (Consistency, Availability and Partition Tolerance) |
SQL Databases are better for Multi-Row Transactions | NoSQL Databases are better for Unstructured Data like JSON or Documents |
As it is widely used in most of the application since very long time, we get huge technical support from Community Users and from Experts and also great support available by all the SQL Database Vendors | NoSQL Database have very limited Experts, we might face difficulties in setting up and deployment of large scale Databases |
Consider SQL, when your data is highly structured and its structure will not change frequently | Consider NoSQL, when your data is not structured or semi-structured. |
Consider SQL, where you require high Integrity and Security | Consider NoSQL, where we don't want level of Integrity and Security provided by SQL Databases. |
SQL is best choice for Complex Query | NoSQL is not best choice for Complex Query |
Examples of SQL Databases are: MS-SQL, MySQL, Oracle, SQLite, PostgreSQL, Teradata | Examples of NoSQL Databases are: MongoDB, Azure Cosmos DB, Neo4j, Apache Cassandra, ScyllaDB |
SQL Databases:
SQL can be effectively used to insert, update, delete and read the database records, it is also used to maintain the relationship between tables and perform Joins to get the data from multiple tables. Since we need to perform Joins to get the Normalized data, it may impact the query execution time and may lead to slowness of the application
NoSQL Databases:
NoSQL avoids joins so application becomes faster and it is easy to scale, it is used for Big Data and real time Web Applications. With NoSQL workload can be automatically spread across multiple Servers. With NoSQL, we do not need to perform DBA related tasks such as Refactor SQL and create Materialized views so we can reduce DBA costs.
NoSQL database uses Key-Value pair, Wide Columns, Graph and Document for storing and retrieving the data. Following are the Databases based on their Classification:
Key-Value Pair: Aerospike, Amazon DynamoDB, Apache Ignite, Azure Cosmos DB, InfinityDB, Oracle NoSQL, Redis, Riak
Wide Columns: Apache Accumulo, Apache Cassandra, Azure Cosmos DB, HBase, ScyllaDB
Graph: ArangoDB, Datastax, InfiniteGraph, MarkLogic, Neo4j, OrientDB, RedisGraph, TigerGraph, VelocityGraph
Document: Azure Cosmos DB, MongoDB, IBM Domino, Apache CouchDB, MarkLogic, OrientDB, Cloudant, BaseX, Couchbase Server, eXist, IBM Informix,