In this article we will introduce our self with the basic concept of NoSQL.We will also explore it's categories , benefits etc.
Introduction
The buzz is about NoSQL. So what it is? They say it as "Not Only SQL". So what does it signify?Let us dig the term SQL or "Structured Query Language". In a typical RDBMS system, we will encounter a proper relational structured data model where
- data is organized in entities(or tables)
- entities in the same group have the same descriptions (attributes)
But in real world, the case cannot be like so. Not all data is relational.Data can be unstructured or semistructured. Moreover,the data can grow to any extent say about yottabyte etc. When a traditional RDBMS grows out of one server, it becomes very difficult to use it since they don't scale out very well in a distributed system.The giants like Google, Yahoo, Facebook, Twitter, Amazon etc. have huge chunk of data and they are located in distributed systems for obvious reasons. A RDBMS system will fail to make a promise for scalability and performance in such a situation. Herein NoSQL will come into picture.They make promises in the following lines -
- Horizontal scalability
- Fault tolerant
- Preety good in handling de-normalized data
- Designed for high load
That being said, NoSQL fits for structure data too.What matters is that it focuses on data quantities and not on the element relationships.
So from the above discussion, we can infer that NoSQL fits both for structured as well as non-structured + semistructured data. That means it is "not only SQL" or not only it can handle structured data but semi-structured or non-structured data can fit into this model too. So it is SQL as well as non-SQL i.e. NoSQL.
Having these little information in our hand, we can start our exploration more on NoSQL.
So what is NoSQL?
From wikipedia:
"NoSQL is an umbrella of term for a loosely defined class of non-relational data stores that break with a long history of relational databases and ACID guarantees. Data stores that fall under this term may not require fixed table schemas, and usually avoid join operations. The term was first popularised in early 2009."
The relational Database peoples access the Relational Databases using Structured Query Language.That means that this query language is the main gateway to communicate with the tables, columns, rows, relationships etc. in the RDBMS parlance.
Now for the NoSql part, let us put a "Not only" in front of the last statement of the previous line( Not tables, columns, rows, relationships).This implies that NoSQL is an attempt to solve problems which cannot fit into the table/column/rows structures.This indicates that NoSQL databases will not support relationships, they are abandoning the well known RDBMS structures just because the problems has changed since their conception.
e.g. if we have our own storage system ( say a customized data exchange format e.g. xml) that can be use for storing, retriving or organizing the data and we have an API that will help to do so, we have a NoSQL is place (in layman's term).
Categories of NoSQL?
Since every NoSQL provider tries to solve a different problem, so NoSQL implementations can be categorised by their manner of implementation.
- Key-Value Store Database
- Column Family Database
- Document Store Database
- Graph Database
- Multivalue Database
- Object Database
- Tripple Store Database
- Tuple Store Database
- Tabular Database
Now let us introduce ourself with the above categories in the below paras.
1.Key-Value Store Database
This kind stores data in a hash table where there is a unique key and a pointer to a particular item of data.e.g.
Key Value
----- : ------
Id1_Name : Niladri Biswas
Id1_Citizenship : Indian
Id2_Name : Mike Curz
Id2_Citizenship : American
Since it is guarented to always have a unique key for a particular object, we can query the database for that unique key and get the results back from whichever node has the object.
Examples involve Rika,Dynamo etc.
Read more about it from
- What is a Key/Value store database?
- Key value stores: A Practical Overview
- That No SQL Thing - Key/Value stores
2.Column Family Database
A Column Family database stores data column wise rather than row-wise.In a Column Store Databse, each row which is addressed by a key contains one or more "columns".Columns are themselves key-value pairs. The column names need not be predefined, i.e. the structure isn't fixed.Columns in a row are stored in sorted order according to their keys (names).
Column family:
7DE04F9F-5398-4DC5-9BC4-66CC96A927DE <- Row
Name Location Salary <- col col col
A.Reddy India 2000 <- val val val
CC29FC6D-BA52-4D98-A366-C7F666941C46 <- Row
Name Location Salary <- col col col
A.Cruz Burma 5000 <- val val val
Examples : Cassandra,HBase etc.
3.Document Store Database
Document database stores semi-structured or unstructured records/documents in JSON format.The informations are encoded using XML, YAML, JSON, BSON, Binary forms like PDF ,Microsoft Office documents (MS Word, Excel, and so on) etc.
The following is a simple document that we can store in a Document Store Database
{ "Question Name" : "TSQL Beginners Challenge 3 - Find the Factorial"
"Author" : "Niladri Biswas"
"Launch Date" : "March 15th, 2010"
"Link" : "http://beyondrelational.com/modules/19/tsql-beginners/303/tsql-beginners-challenge-3-find-the-factorial.aspx?tab=info"
"Tags" : ["SQL Challange","TSQL Challange", "Database Challenge"]
"Description" : " This challenge though does not have any resemblance with the real time problem directly, but it measures about logical thinking. The problem is all about finding the factorial of numbers. Though it is known to most of us what a factorial is, but to recall the concept here is an example:actorial of 3 is 1*2*3 = 6 i.e. the factorial of a non-negative integer n, denoted by n!, is the product of all positive integers less than or equal to n."
}
Examples : MongoDB,CouchDB etc.
4.Graph Database
This kind of NoSQL database fits best in the case where in a connected set of all nodes,edges satisfy a given predicate, starting from a given node.A classic example may be any social engineering site.
Examples : Neo4j etc.
Read more about it from here
5.Multivalue Database
MultiValue database deals with three dimensional data modelling where they focus mainly on three-dimensional data structures like Fields, Values, and Subvalues.
Suppose we have a field say Phone Number.Now that field contains two values say Mobile Phone and Landline.Further say the Landline has two kind of values which we refer as sub-values say Home Phone Number and Office Number.This is what is the concept of Multivalue Database.
Examples : jBASE etc.
Read more about it from
- Multivalue Database
- MultiValue Databases
6.Object Database
In this case, informations are represented in the form of objects
Examples : db4o etc.
7.Tripple Store Database
In a classic relational database, data is stored in records. Each record contains multiple fields. These fields contain data that may belong to some object. The relation between the field and the object it belongs to is not represented as data in the database. It is only available as metadata in the form of the column (name, datatype, collation, foreign keys). An object is not explictly modelled, but rather via a series of linked tables.
A Triple Store Database is a network of interrelated triples ("subject-predicate-object" triplets) whose predicates are part of the data themselves. Moreover, each object has an identifier that is not just an integer number that means only something inside the database only. It is a URI that may have a distinct meaning worldwide.
A triple is a record containing three values: either (uri, uri, uri) or (uri, uri, value). In the first form the triple relates one object to another, as in the fact "Vox inc. is a supplier" (Both "Vox inc.", "is a", and "supplier" are semantic subjects identified by a uri). In the second form the triple links a constant value to a subject, as in "Vox inc.'s phone number is 0842 020 9090".
Examples: Mulgara etc.
Read more about it from
- NoSQL Option: Triplestore Databases
- Semantic web marvels in a relational database - part I: Case Study
- When to use triple store?
8.Tuple Store Database
It is a schema free, ordered list of elements.
Examples: Apache River,Tarantool etc.
9.Tabular Database
It is a sparse, distributed, persistent multidimensional sorted mapped storage system for managing structured data that is designed to scale to a very large size of data across thousands of commodity servers. The map is indexed by a row key, column key, and a timestamp.
Examples: BigTable,HyperTable etc.
Benefits of NoSQL
Flexible data model: No pre-defined schema is allocated for NoSQL databases.The data format can also change at any point of time.This on the other hand provides extreme flexibility in the application.
Consistent, high performance:Data caching is one of the characteristics of NoSQL DBs that brings in high performance in the application.
Easy scalability:This kind of DB's are highly scalable in nature.
References
- What is NoSQL
- The Four Horsemen of NoSQL
- An introduction to NoSQL databases
- The end of SQL and relational databases?
- In defence of SQL
- NoSQL: An Overview of NoSQL Databases
- NoSQL - the SQL
- Transitioning from RDBMS to NoSQL
Conclusion
In this article, we tried to understand what NoSQL is, it's type, it's benefits etc.Hope you find this useful.Thanks for reading.