In the previous article Introduction to NoSQL Database – Part 1, I have given an introduction to what is NoSQL database and How they evolve to fill that gaps and resolve issues which Relational databases were not able to handle. I would request you to visit the article Introduction to NoSQL Database – Part 1, before reading this article.
In this article, I have given details about various flavors of NoSQL database available with examples. There is couple of Non Relational databases available today and they fall in following four categories:
- Key-Value Stores Database
- Document Oriented Database
- Column Store Database
- Graph Store Database
Key-Value Stores databases
Key-value DB stores data in the pair of Key and Value. They are pretty
simplistic and most basic type of NoSQL DB but provide efficient and powerful
model. In this model, data is stored in key value pairs where attribute is the
KEY and content is the VALUE. You can think of them like the hash table in Java
or other programming languages. It
allows the Developers and Data Modelers to design a model which is schema less
and provides flexibility. Data can only be queries and retrieved using the keys
only. Keys in these databases are indexed. Unlike RDBMS, these databases offer most
flexible data model where format of the every row can be different. Key Value
stores provide high scalability which means that they can grow in size by
multiple times without having to redesign them. They are extremely fast and are
designed to handle massive loads and capable of processing huge amounts of
data.
Key value store databases can be used in application which requires to
process huge amount of low complexity data with scaling in mind. They can also
be used for managing and storing user's session information, Storing user's
shopping cart information.
Example Key Value databases include Cassandra, Amazon
DyanmoDB, Azure Table Storage (ATS), Riak, BerkeleyDB.
Strengths: Schema less model, extremely fast processing, manage massive data
loads
Weakness: Low consistency, no joins and
aggregations.
For
details on use cases, visit the excellent article which explains the use case
of Key value store databases. “Big
Data Architectures – NoSQL Use Cases for Key Value Databases”
Document Oriented Database
Document store databases stores the data in the form of documents. It
expands the basic idea of key-value stores where “documents” contain more
complex grouping of key value pairs. Each document is assigned a unique key,
which is used to retrieve the document. Data type of Key is always string and
values can be stored as strings as well as Numeric, Boolean, Arrays and other
nested Key value pairs.
Documents are stored in standard formats like JSON, XML etc. Documents inside a document-oriented database are similar to records in relational databases. However their schema less feature makes them more flexible than relational db.
Documents are stored in standard formats like JSON, XML etc. Documents inside a document-oriented database are similar to records in relational databases. However their schema less feature makes them more flexible than relational db.
In relational database, each record in a table has same columns and columns
which do not have data for a record will be empty/null. However in Document
store database, each record can have different schema and there is no need to
store columns/keys/attributes which are blank.
Example of document having grouping of Key Value pair is given below:
[
{
"EMP_ID":
"101",
"EMP_NAME":
"John Brown",
"SKILLS": [
"JAVA","ORACLE" ]
},
{
"EMP_ID":
"102",
"EMP_NAME":
"Richard Castle",
"SKILLS": [
"TALEND" ]
}
]
These databases are primarily designed for storing, retrieving, and
managing document-oriented information. E.g.
- Blog application wit comments functionality,
- Storing massive amount of semi structured or unstructured logs.
- Storing Machine/Sensor generated data.
- Managing and Storing data for Surveys application.
- Application which deals with diverse product portfolios.
Strengths: Flexible Schema, Fast key value access, Massive write performance, Scale able
Weakness: Less consistency, no Joins, Lack of complex queries
Based on graph
theory, these databases are designed to explore relations or connections
among different nodes. These databases use edges and nodes to represent and
store the data. Nodes are represented as objects and Edges act as relations among these
nodes. Every node and edge can store additional properties in form of Key-value
pairs. It is not optimal to store the connected data in RDBMS as they struggle
while traversing through all connected data. Graph Data model is efficient for
traversing massive amount of data quickly and efficiently. Graph database
provides schema less and efficient storage of semi structured data. Some of the
Graph databases are ACID complaint and offers rollback support.
Graph database can be useful for application where objects are linked
interconnected. Best example of these applications is Facebook and other Social
media apps. We can model Social networking websites using Graph Database where
each account represents a node and edge is the relation between them. Let’s
take an example of below sample graph data model. Let’s assume it represents a
LinkedIn connection in the simplest form where each node represents a LinkedIn
user and each edge represent a connection. We can say that users B,C and F are
1st connection of A and users D, E & G are 2nd connection to A.
We can also say that user F is only connected to user E and G. This is just a
simplistic representation of Graph database. Each Node and edge can have their
own properties.
Graph database can be used in following applications:
- Social Media and Networking applications
- Network and Cloud Management
- Security and Access Control
- Recommendation engines
Column Store Database
Instead of storing data in
rows, these databases are designed for storing data tables as sections of
columns of data, rather than as rows of data. All columns are treaded
individually and values of single column are stored together. Having stored
data in wide-column stores offer very high performance and a highly
scalable architecture. Column stored can
greatly improve the performance of the queries that requires small number of
columns as they will have to fetch data for those columns and combine them
together to show the result set. Column store databases do not store data in
tables but store data in massively distributed architecture. These were created
to store and process data distributed over many machines. Keys in column store
databases point to multiple columns. As the data is stored in distributed
architecture, it can be aggregated quickly and efficiently.
Column store is basically based on Google Big table implementation. Let’s understand with example of simple Employee table:
Column store is basically based on Google Big table implementation. Let’s understand with example of simple Employee table:
RowID
|
EmpID
|
EmpFirstName
|
EmpLastName
|
EmpAge
|
001
|
1
|
Bob
|
Wilson
|
28
|
002
|
2
|
John
|
Clair
|
34
|
003
|
3
|
Cindy
|
Joseph
|
37
|
004
|
4
|
Mike
|
Cooper
|
25
|
Let’s compare, how data for the
above stored in Relational and Column Store database?
Relational DBMS: In most of relational database, above data set may
be serialized and stored like below:
001:1,Bob,Wilson,28
002:2,John,Clair,34
003:3,Cindy,Joseph,37
004:4,Mike,Cooper,25
Every record will be assigned a
internal Id (rowed) which is internally used by the system to refer data.
Column Store Database: A column-oriented database serializes all of
the values of a column together, then the values of the next column, and so on.
Data may be stored like below:
1:001,2:002,3:003,4:004
Bob:001,John:002,Cindy:003,Mike:004
Wilson:001,Clair:002,Joseph:003,Cooper:004
28:001,34:002,37:003,25:004
Some of the Column store databases may also store column data in column
specific files. E.g. one data file per column.
Examples include: HBase, BigTable
and HyperTable.
Strengths: high throughput for Big
Data, Excellent, Highly Scale able, Strong partitioning support
Weakness: inability to perform
complex queries, high latency of response to queries
This completes details of types of No SQL databases. Let me know if you have any queries or questions.
In the next article I will try to
cover difference between Relational and NoSQL database and when we should
prefer to use NoSQL over relational database?
Pick a gambling web site that provides no-hassle, downloadable apps and instant-play games. ECOGRA is a global testing agency that accredits and 카지노사이트 regulates the world of on-line gambling. It checks to see whether or not on-line casinos are honest, honest and secure.
ReplyDelete