NoSQL Database
|
Initially data was stored in databases typically in mainframe systems that managed
data in files using languages
(3GL) such as c,
COBOL, etc. To reduce the complexities
of writing functions/procedures and custom code to organize such data, the related data
was organized in relational databases that let to the creation of
RDBMS and processing such data using
SQL, invented by Edgar F. Codd in 1970.
This is very efficient for structured and relational data.
|
|
As the years progressed, the data volume increased drastically.
The database size increased and they came to be commonly referred to as
VLDB.
Along with numeric, text and datetime data, other data types (
XML,
BLOB,
CLOB,
) were being commonly used. With the advent of web based e-commerce
applications, data is typically created as transaction data along with image files,
UPC
bar codes in
jpeg format,
and social media applications create data in
png format, audio files, video clips in
mpeg and
other sources such as security camera recording, data from
GPS
devices in video formats. Most of these data types are not
structured and hence not suited for the RDBMS paradigm.
|
|
Initially
many companies tried to use such unstructures data (check images storage and processing in
banking and financial institutions, large text, xml etc.) in relational databases, that
provided compatible data types (BLOB, CLOB, xml etc.). The performance (retrive, read and render)
was a big issue and so was the scalability, when such data was stored in RDBMS systems. This led to storing of
non-structured data in non-relational databases and they are known as NoSQL databases
started in 2000s, that use 3GL (c, java,
Python, javascript, jQuery, etc.) for management of data and hence the moniker
NoSQL. It is also know as Not Only SQL (NoSQL). Typically, NoSQL databases typically do
not support or conform to ACID transactions. They
adhere to the CAP theorem.
|
|
Types of NoSQL Database
|
NoSQL databases pair each key value to complex data structure, which is commonly known as a
document. A document can be setup using key-value pair, key-array pairs, or even nested
documents. The document is typically stored as a
json file.
|
|
The columnar NoSQL databases store large datasets as columns than as rows.
Typical columnar databases are Cassandra and HBase.
|
|
The graph-database store data in the form of data networks or connections.
This database is designed to rapidly find connected data, hierarchies
(manager-employee) etc. extremely faster than RDBMS that use hierarchical
queries. Typical graph databases are Neo4J and Giraph.
|
|
The key-value store NoSQL databases store data as a key.
Typical key-value databases are Riak and Berkeley DB. Redis
database, an in-memory data structure store, has the ability
to maps key-value to datatypes such as strings, hashes,
lists, sets, sorted sets with range queries, bitmaps,
hyperloglogs and geospatial indexes with radius queries.
|