NoSql Notes
NoSql Notes
NoSql Notes
SQL
NoSQL
insert a new book record
db.book.insert({
ISBN: "9780992461256",
title: "Full Stack JavaScript",
author: "Colin Ihrig & Adam Bretz"
});
SQL databases are vertically scalable whereas the NoSQL databases are
horizontally scalable. SQL databases are scaled by increasing the horsepower of the hardware. NoSQL databases are scaled by increasing the
databases servers in the pool of resources to reduce the load.
SQL databases uses SQL ( structured query language ) for defining and
manipulating the data, which is very powerful. In NoSQL database, queries
are focused on collection of documents. Sometimes it is also called as UnQL
(Unstructured Query Language). The syntax of using UnQL varies from
database to database.
SQL database examples: MySql, Oracle, Sqlite, Postgres and MS-SQL. NoSQL
database examples: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j and
CouchDb
For complex queries: SQL databases are good fit for the complex query intensive
environment whereas NoSQL databases are not good fit for complex queries. On a highlevel, NoSQL dont have standard interfaces to perform complex queries, and the queries
themselves in NoSQL are not as powerful as SQL query language.
For the type of data to be stored: SQL databases are not best fit for hierarchical data
storage. But, NoSQL database fits better for the hierarchical data storage as it follows the
key-value pair way of storing data similar to JSON data. NoSQL database are highly
preferred for large data set (i.e for big data). Hbase is an example for this purpose.
For scalability: In most typical situations, SQL databases are vertically scalable. You
can manage increasing load by increasing the CPU, RAM, SSD, etc, on a single server.
On the other hand, NoSQL databases are horizontally scalable. You can just add few
more servers easily in your NoSQL database infrastructure to handle the large traffic.
For high transactional based application: SQL databases are best fit for heavy duty
transactional type applications, as it is more stable and promises the atomicity as well as integrity
of the data. While you can use NoSQL for transactions purpose, it is still not comparable and
sable enough in high load and for complex transactional applications.
For support: Excellent support are available for all SQL database from their vendors. There
are also lot of independent consultations who can help you with SQL database for a very large
scale deployments. For some NoSQL database you still have to rely on community support, and
only limited outside experts are available for you to setup and deploy your large scale NoSQL
deployments.
For properties: SQL databases emphasizes on ACID properties ( Atomicity, Consistency,
Isolation and Durability) whereas the NoSQL database follows the Brewers CAP theorem
( Consistency, Availability and Partition tolerance )
For DB types: On a high-level, we can classify SQL databases as either open-source or closesourced from commercial vendors. NoSQL databases can be classified on the basis of way of
storing data as graph databases, key-value store databases, document store databases, column
store database and XML databases.
Speed: For simple queries, it gives good performance, as all the related data
are in single document which eliminates the join operations.
Scalability: It is horizontally scalable i.e. you can reduce the workload by
increasing the number of servers in your resource pool instead of relying on a
stand alone resource.
Dynamic Schema: Its gives you the flexibility to evolve your data schema
without modifying the existing data
2. CouchDB
CouchDB is also a document based NoSQL database. It stores data in form of JSON documents.
The following are some of CouchDB benefits and strengths:
3. Redis
Redis is another Open Source NoSQL database which is mainly used because of its lightening
speed. It is written in ANSI C language. The following are some of Redis benefits and strengths: