What is NoSQL database and why should you learn/use it?
A NoSQL database are also sometimes called "Not only SQL", which provides a mechanism for storage and retrieval of data which is modeled in means other than the tabular relations used in relational databases. A NoSQL database environment is, simply put, a non-relational and largely distributed database system that enables rapid, ad-hoc organisation and analysis of extremely high-volume, disparate data types.
NoSQL databases are sometimes referred to as cloud databases, non-relational databases, Big Data databases and a myriad of other terms and were developed in response to the sheer volume of data being generated, stored and analyzed by modern users and their applications.
In general, NoSQL databases have become the first alternative to relational databases, with scalability, availability, and fault tolerance being key deciding factors. They go well beyond the more widely understood legacy, relational databases in satisfying the needs of today's modern business applications.
Types of NoSQL Database -
- Graph database - Based on graph theory, these databases are designed for data whose relations are well represented as a graph and has elements which are interconnected, with an undetermined number of relations between them. Ex: Neo4j and Titan.
- Key-value stores - Every single item is stored as a Key-value pair. Key-value stores are the most simple among NoSQL Databases. Ex: Cassandra‚ DyanmoDB, Azure Table Storage (ATS), Riak, BerkeleyDB.
- Column store - 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. While this simple description sounds like the inverse of a standard database, wide-column stores offer very high performance and a highly scalable architecture.Ex: HBase, BigTable and HyperTable.
- Document Databases - These Db usually pair each key with a complex data structure which is called a document. Documents can contain key-array pairs or key-value pairs or even nested documents. These are designed for storing, retrieving, and managing document-oriented information, also known as semi-structured data. Ex: MongoDB and CouchDB.
Why should you learn/use NoSQL?
The reasons for businesses to adopt a NoSQL database environment over a relational database have almost everything to do with the following market drivers and technical requirements.
Continuous Data Availability - In today's marketplace, where the competition is just a click away, downtime can be deadly to a company's bottom line and reputation. Hardware failures can and will occur, fortunately NoSQL database environments are built with a distributed architecture so there are no single points of failure and there is built-in redundancy of both function and data. If one or more database servers, or "nodes" goes down, the other nodes in the system are able to continue with operations without data loss, thereby showing true fault tolerance.
Real Location Independence - The term location independence means the ability to read and write to a database regardless of where that I/O operation physically occurs and to have any write functionality propagated out from that location, so that it's available to users and machines at other sites. Such functionality is very difficult to architect for relational databases. Other scenarios where location independence is an advantage are many and include servicing customers in many different geographies and needing to keep data local at those sites for fast access.
Better Architecture - Another reason to use a NoSQL database is because you need a more suitable architecture for a particular application. It's critical that organisations adopt a NoSQL platform that allows them to keep their very high volume data in the context of their applications.
Analytics and Business Intelligence - A key strategic driver of implementing a NoSQL database environment is the ability to mine the data that is being collected so as to derive insights that puts your business at a competitive advantage. Extracting meaningful business intelligence from very high volumes of data is a very difficult task to achieve with traditional relational database systems. Modern NoSQL database systems not only provide storage and management of business application data but also deliver integrated data analytics that deliver instant understanding of complex data sets and facilitate flexible decision-making.
The Growth of Big Data - Big Data is one of the key forces driving the growth and popularity of NoSQL for business. The almost limitless array of data collection technologies ranging from simple online actions to point of sale systems to GPS tools to smartphones and tablets to sophisticated sensors "and many more" act as force multipliers for data growth.