In Relational database management systems, data is organized as tables (called relations)in rows and columns. A table contains data about only one entity ( real-world object – employee details, patient details, book details, etc). Each table should have a primary key and the tables are linked by primary and foreign keys. The tables are created using SQL. SQL constraints ensure the accuracy and reliability of the data within the database. Database normalization is the method by which data is efficiently organized in the database. Eliminating redundant information, as an instance, storing the same data in more than one table. This reduces storage and increases the complexity of the system.ACID stands for Atomicity, Consistency, Isolation, and durability property of RDBMS.
A NoSQL ( referring to “non-SQL” or “not only SQL” or “non-relational”) database store data in a non-tabular format compared to relational databases. They store the relationship information as well by allowing related data to be nested within a single data structure. Doesn’t use data normalization or complex features like query languages, integrity constraints, ACID property, etc.
BASE features of NoSQL Databases
( Basically Available, Soft state, Eventual consistency)
• Basically, available means the data is guaranteed to be available all the time. There is a response to any request ( can be a failure too).
• Soft state means even without an input; the system state may change over a period of time.
• Eventual consistency means that the system will become eventually consistent over time (maybe, once it stops receiving input).
The term “eventual consistency” means to have copies of data on multiple machines to get high availability and scalability. Data replication may not be instantaneous as some copies will be updated immediately while others in due course of time. These copies may be in due course of time, become consistent. Hence, the name eventual consistency.
Query Mechanism tools for NoSQL
The most common data retrieval mechanism is the REST-based retrieval of a value based on its key/ID to get the resource.
In a shared-nothing design, Multiple NoSQL databases can be executed in a distributed fashion. Each server node in the cluster operates independently of every other node. The processes don’t share memory or disk among them. The system doesn’t have to get consensus from every single node to return the output data to a client. Queries are fast because they can be processed and the output is got by the node which received it. It typically involves sacrificing consistency across the cluster for performance.
Features of NoSQL
• Offers auto-scaling (both vertical and horizontal).
• Only provides eventual consistency.
• Shared Nothing Architecture. This enables less coordination and higher distribution.
Need for NoSQL Databases
NoSQL databases are especially useful for working with large sets of distributed data. NoSQL databases are widely used in many modern applications such as mobile, web, and gaming that require flexible, scalable, and high-performance.
Applications are moving to the cloud platform and big data is becoming bigger.
The concept of NoSQL databases became popular with Internet giants like Google, Facebook, Amazon, etc. who deal with huge volumes of data.
Tesco, Europe’s No.1 retailer, uses NoSQL for e-commerce services and other applications.
GE and Marriott are also deploying NoSQL Database systems on a large scale.
Types of NoSQL Databases
There are four major types of NoSQL databases. They are document databases, key-value databases, wide-column stores, and graph databases.
MongoDB is consistently ranked as the world’s most popular NoSQL database and is an example of a document database. Other examples are Couchbase, CouchDB, IBM Domino, etc.
Key-value databases are a simpler type of database where each item contains keys and values. Key-value databases are great for use cases where you need to store large amounts of data but you don’t need to perform complex queries to retrieve it. Common use cases include storing user preferences or caching. Redis and DynanoDB are popular key-value databases.
Wide-column stores store data in tables, rows, and dynamic columns. Wide-column stores provide a lot of flexibility over relational databases because each row is not required to have the same columns. Wide-column stores are commonly used for storing Internet of Things data and user profile data. Cassandra, Hypertable, and HBase are two of the most popular wide-column stores.
Graph databases store data in nodes and edges. Nodes typically store information about people, places, and things while edges store information about the relationships between the nodes. Graph databases are used in applications s where you need to traverse relationships to look for patterns such as social networks, public transport links, road maps, and recommendation engines. Neo4j and JanusGraph are examples of graph databases.
The final words….
Since the NoSql databases often sacrifice the ACID property for its scalability (and does not support constraints), it cannot be used in transaction management like SQL and Relational databases. NoSQL offers limited query capabilities. GUI mode tools to access the database are not flexibly available in the market ( as NoSQL is an open-source software). Some databases store data that are quite large (BigData) and having descriptive key names actually increases the document size and it is very difficult to handle.
To know further about NoSql Databases, use the below link :