NoSQL is a Database Management System.
There are different kind of DBMS
In general database management system provides a mechanism for storage and retrieval of data.NoSQL is a non relational,cluster-friendly and schema less.
First flat file system was created.In 1970’s codd come up with relation theory based on that relational database created.Problem was that flat file have no-standard everybody create own protocol and there was creating inefficiency.
RDBMS standardize the way we communicate with database.Life moved on and everything was perfect,suddenly we have Big data scenario. RDBMS unable to cope with Big data the answer is NoSQL.
NoSQL Focused to Provide
- High Availability
Data stored in different database management system
RDBMS stores only structure data in tables.
OLAP stores in cubes.
NoSQL stores structure or unstructured data in collections.
For RDBMS we have to define the tables structure in advance we have to tell the system the table has these number of columns and each column takes this type of data, what will be the max size so on.This way we can not handle unstructured data.Where there is no fix format.
NoSQL can handle both structure data and unstructured data.Example of unstructured data would be media,audio files ,blogs that people are writing text messages and so on.
Type of NoSQL database
- Key Value Store
- Document Oriented
Example of Key Value Stored database are: Memcached,Coherence,Redis
Example of Tabular database are: Big Table,Hbase
Example of Document Oriented database are: MongoDB, Couch DB
NoSQL -What is Missing?
No-joins support because of this join relational database are not scalable
No-complex transaction support for example you can see insert three records then update the two records then check something if stocks will roll back everything
Transaction support and constraints support has to be implemented in application level in NoSQL.
NoSQL database provide less functionality and high performance.
When to use NoSQL?
- The ability to store and retrieve great quantities of data is important.
- Storing relationships between the elements is not important.
- Dealing with growing list of elements twitter post, internet server logs,blogs.
- The data is not structured or the structure is changing with time.
- Prototypes or fast applications need to be developed.
- Constraints and validations logic is not required to be implemented in database.
When Not to use NoSQL?
- Complex transaction need to be handled.
- Joins must be handled by database.
- Validation must be handled by database.