Wednesday, May 7, 2014

Difference between SQL and NoSQL database

Key Difference



SQL
NoSQL
Known As
SQL Based database Management System is majorly known as RDBMS or DBMS Systems
Whereas NoSQL database are primarily non-relational database or distributed database
Architecture
SQL Database mainly   architecture surrounded to the Tables
      In Case of NoSQL database there are major four categorization
  • Document base 
  • Key-value pair base 
  •  Graph database 
  • Wide-column Store
Schema
SQL database has its own predefine schema to store structure data
In NoSQL database, there is no predefine schema, here schema is most dynamic element based on the data elements
Scalability
SQL Databases are vertically scalable, means if we want to scale SQL base database, we need to give hardware boost on which the DBMS System is installed. This is where it sometimes goes for the limitation of scalability.
NoSQL database are horizontally scalable, means if we want to scale it, we need to add more nodes and create distribution network based on our own need and required power. This is how it reduce load on the database
Data Retrieval
In SQL based database, to define and manipulate data we can use SQL (Structure Query Language), which is very powerful now a days
In terms of NoSQL database queries are focus on the collection and documents. Sometimes it is called as UnQL (Unstructured Query Language). This is still in the evolution phase, so it is varies from vendor to vendor of the NoSQL database
Systems in Market Place
BigTable
Redis
RavenDb
Classification
     We can classify RDBMS into two major type 
  • Open Source database
  • Close Source database
      We can classify NoSQL DB based on the way of storing data
  • Key-value pair store database 
  •  Graph database 
  •  Document Store 
  •  Column Store 
  •  XML Store
Based Concept
All RDBMS System based on the codes law and ACID Properties
NoSQL database mostly follow “The CAP Theorem”1


Best Fit for


Complex Query Execution
SQL database are best fit for complex queries intensive environment and relative data
NoSQL don’t have standard interface to perform complex queries and the queries themselves not so powerful in NoSQL database
Type of data store
SQL database are best fit for storing Relational data or sometimes Object oriented data
NoSQL database is best fit for hierarchical data and document base data. This type of database is preferred for large data sets
Transaction based application fitness
SQL databases are excellent for heavy duty transaction based data or related application, as it is more stable and mostly satisfied ACID Properties (Atomicity, Consistency, Isolation and Durability).
NoSQL database basically not meant for transaction based application but it’s main objective focus on document based large data sets
Support
Excellent support available for most of the RDBMS vendors
For some NoSQL database we still need to rely on community support


Advantages of SQL Database

  • SQL base RDBMS are excellent in terms of providing atomicity, consistency, isolation and durability
  • It can very easily handle large volume of transaction with high level of accuracy.

Advantages of NoSQL Database

  • NoSQL database generally process data faster. Reason why whatever data store in the NoSQL database dynamic schema is in the form of the directly consumable JSON Object.
  • Simple data model to store data in database
  • Major systems are flexible enough to better enable developers to use the application in ways that meet their needs.
For more on NoSQL Database have a look at Brian's NoSQL presentation. It's funny!


Conclusion

Both the data management techniques are best in what they do. Criticizing any one of them will not help. NoSQL databases are great invention over a period of time in order to store large volume of data along with easy and smooth retrieval.    



The CAP Theorem

Impossible for any shared data system to guarantee simultaneously all of the following three properties:
         Consistency: Once data is written all future read requests will contain data
         Availability: The database is always available and responsive
         Partition Tolerance: if part of the database is unavailable, other parts are unaffected.