SQL was created to give relational databases a way to store data and communicate. Relational databases were not designed to manage the scale and agility challenges.
NoSQL in contrast, refers to a newer type of non-relational databases which do not use SQL and are gaining popularity. NoSQL cover a wide variety of different database technologies.
What are these differences?
The relationships and tables that make up SQL databases can be, for large organizations, in millions. Combine this with millions of users doing lookups in these tables, and the system can suffer major performance issues. These data types, which can contain objects, lists, and other data types themselves, do not map well to tables consisting of only rows and columns.
- Document databases: may contain XML, JSON, binary forms like PDF, MS documents eg Elastic Search.
- Key-value stores: allow the application to store its data in a schema-less way eg Memcache.
- Graph stores: relations are well represented as a graph eg neo4j.
- Wide-column: store columns of data together, instead of rows eg Cassandra
- MySQL and Oracle are examples.
- NoSQL: Based on database type
- SQL: Rows in table and each column storing specific data type (varchar, integer, Boolean, etc...).
- NoSQL: Dynamic, there is no predefined schema, which means records can be added with new data at runtime which make development goes faster and less database administration time.
- SQL: Data types are fixed and can’t fit with agile development because whenever you finish a complete feature you need to change your database schema “first you’ll add columns to the database and then update to new schema”. For large databases, this means slow processes and significant downtime.
- NoSQL: Horizontally database administration can add more servers or cloud instances and database automatically spreads data across servers.
- SQL: Vertically; increase server power to increase transaction process.
- NoSQL: Object oriented APIs.
- SQL: Standard SQL queries.
SQL and NoSQL systems can both perform well when managed by competent administrators, but the best choice will depend on how it will be used and the skills of the people who will be using it.