NoSQL is next generation
DBMS which is used to store and retrieve the data which does not have specific
format or table like structure. NoSQL database is also called as “Not only SQL”
to emphasize that it does not use SQL language but It uses SQL-like language. The
original intension has been modern web scale databases. The movement began in
early 2009 and growing rapidly. NoSQL databases are mostly addressing some of
the points:-
·
Non-relational
·
Distributed
·
Open source
·
Horizontally scale
As we Know
there are different types of Database Management System and RDBMS is most
commonly used database management system. If we go back in history, first flat
file systems were created then in 1970's Codd came up with Relational theory
and based on that relational databases were developed. The problem was that in
flat file system there was no standard way of storing data and no standard way
of communicating with data. Everybody has implementing their own protocol and
that was creating lots of inefficiency. So relational database standardized the
way we communicate with database. Then life moved on and everything was going
well and suddenly, we entered into Big data scenario. Relational databases are
unable to handle huge amount of data so the answer was “NoSQL”. So NoSQL was
created because of limitations of relational databases.
The
data is structured in relational databases. We have to define table structure
in advance, we have to tell the system in advance like table will have 10 rows
and 10 columns and each column will take particular data type and this would be
the maximum value one can enter and so on. This way we can't handle
unstructured data where there is no fixed format or format is always changing.
So NoSQL handles both structured and unstructured data.
-NoSQL focused to
provide:
·
Scalability
·
Performance
·
High Availability
·
Simple API
·
Schema free
·
Easy replication support
·
Eventually consistent(not ACID)
NoSQL
can handle large amount of data. As data
is keep on growing it provides scalability and high availability in terms of
hardware failure. Ability of NoSQL is to handle large amount of data with
amazing performance with comparison they offers less functionality than RDBMS.
NoSQL is category
which can be commonly further divided into three categories given below with
example:
·
Key Value
Store : Memcached,Coherence, Redis
·
Tabular :
BigTable,Hbase,Accumulo
·
Document oriented
: Mango,CouchDB,Cloudant
If you search you will find more categories. Here is the list
of some:
·
Column store/Column family
·
Document store
·
Key value store/Tuple sore
·
Graph database
·
Multimodel database
·
Object database
·
Grid and Cloud solution
·
XML database
·
Multidimensional database
·
Event sourcing
·
Network model
·
Other NoSQL related databases
·
Unsolved and uncategorized
So what is missing from NoSQL databases if
you compare them with relational databases? Well Joins are not there because of
this joins relational databases are not so scalable. So in NoSQL databases this
functionality is not implemented hence scalability and performance comes in.
The support for complex transaction is not there for example you can’t not do
insert three records then update two records and check something if it’s not
then rollback everything. Again constraint support is not there. Transaction
support and constraint support is not there on database level but transaction
support and constraint support can be applied on application level.
What are the situations or scenarios where one
can use NoSQL database?
·
The ability to store and retrieve great quantity
of data is important.
·
Storing relationship between elements is not
important.
·
Dealing with growing list of elements, example:
Twitter post, Internet server logs, Blogs.
·
The data is not structured or the structure is
changing with the time.
·
Prototype
or fast application need to be developed
·
Constraints and validation logic is not required
to be implemented in database.
What are the
situations or scenarios where not to use NoSQL database?
·
Complex transactions need to be handled
·
Joins must be handled by databases
·
Validations must be handled by databases
No comments:
Post a Comment