SQL vs NoSQL
Last updated
Last updated
So after reading about SQL and NoSQL, the common questions that comes in mind are
What are the differences between the two ?
When do we choose SQL over NoSQL or vice-versa ?
What are the properties needed to decide the type of datastore to use in your application ?
SQL databases are not suitable for hierarchical data storage while NoSQL databases are.
SQL supports ACID, while NoSQL doesn't.
SQL databases support Joins, while NoSQL joins can only be achieved at application layer.
SQL Databases are strongly consistent, while NoSQL databases are highly available.
SQL databases are preferred when the requirement is of correct and consistent data, while NoSQL databases rely on fast data and can compromise on accuracy
SQL databases are vertically scalable while NoSQL are horizontally scalable.
Partitioning: Partitioning is dividing large data into multiple tables in a single database. Vertical partitioning is dividing data by columns into multiple tables (normalisation), while horizontal partitioning is dividing data by rows into multiple tables.
Sharding: Sharding is dividing large data into smaller chunks across multiple machines. There are two types of sharding: Vertical sharding where the data is divided by columns across machines where horizontal sharding is dividing data by rows across machines.
Criteria
SQL/NoSQL
High number of reads/writes (High QPS)
NoSQL
High Concurrency
NoSQL
Low Reads/Writes (Few thousands per second)
SQL
Joins Needed
SQL
Strong Consistency
SQL
High Availability
NoSQL
Transaction Properties
SQL
High Commodity Hardware (Vertically Scalable)
SQL
Low Commodity Machines (Horizontally Scalable)
NoSQL
Sharding
NoSQL
Partitioning
SQL