High-level differences between SQL and NoSQL
Storage
SQL: table-like structure — contains rows and columns.
NoSQL: different storage models, few are: key-value, document, graph, columnar.(Click here for more details)
Querying
SQL: uses Structured Query Language for defining and manipulating data.
NoSQL: It has no defined Query language. Some databases use JSON to query the data.
Schema
SQL: it has a predefined schema. Before you can use the database, you must create a schema. We can alter the schema at a later time.
NoSQL: There is no predetermined schema. Schemas are dynamic, i.e. we can create columns and column types at any time during the development.
Scalability
SQL: In general, SQL databases are vertically scalable. i.e. we can increase the server’s capability by enhancing the CPU power, storage capacity, etc., of a server. Horizontal scaling of SQL is challenging and time-consuming.
NoSQL: NoSQL databases are horizontally scalable. i.e. we can improve the performance by adding new servers.
Some of the NoSql database available are:
Key-Value Stores: Voldemort, Dynamo, and Redis
Document database: MongoD and BCouchDB
columnar database: HBase and Cassandra
Graph Databases: Neo4J and InfiniteGraph