NoSQL(Not Only SQL)
NoSQL can technically be referred to as a Non-Relational or Non-SQL Database that provides a mechanism for storage and retrieval of data permanently and can accommodate a wide range of data models. They are not similar to a traditional relational database Management system and are used as an alternative to(RDBMS), as relational database focuses on tables, columns, rows or schemas which shows how data is executed and how the relationship between them are associated. To briefly define NoSQL one has to describe SQL. SQL is a query language used by RDBMS. NoSQL is useful in dealing with unstructured data where they have not got a predefined data model and is not arranged in a predefined manner; hence they use more flexible data models. NoSQL can deal with the needs and requirements of the next-generation hence they are widely accepted and adopted by the prevailing enterprises. They are Common type of unstructured data includes chat, messaging and large objects such as video and images. NoSQL database contains the simplicity of designs and is viewed as more flexible that offers a concept of eventual consistency.
NoSQL helps in dealing with large volume, variety and velocity requirements of big unstructured data.
• Volume: Database gives a lot of useful ideas and abstractions and they have also got certain properties known as the BASE( Basically Available, Soft State, Eventual Consistency) and maintaining these properties is costly. We must be able to partition the data multiple sites that are run from the same source code base as any user accessing the database should see consistent results.
• Variety: As NoSQL deals with unstructured data, it will be hard for them to integrate varying data into a single fixed model. They depend on various external sources and are unaware of the data relations or schema.
• Velocity: Storing everything to a disk all the time can be expensive; especially this type of large data. Memory is much cheaper now and much faster than always going to disk.
Characteristics of NoSQL Database
• They have a flexible schema; where the data is not executed or organized in a predefined manner, as the case of the relational database model. Different rows have different attributes or structure.
• It can relatively handle large and bigger tasks when compared to relational database management systems. This is because NoSQL database also follows the BASE approach( Basically Available, Soft State, Eventual Consistency)
• Consistency in NoSQL Database can only be guaranteed after a period when the writes stop. Here there is a possibility that queries will not be able to view the latest data.
• NoSQL also follows the concept of CAP Theorem, that is pick 2 out of 3 things: Availability, Consistency and Partition Tolerance. The BASE Database is usually known as the AP system.
Types of NoSQL Database
Various types of NoSQL Database have been created to support the specific need and requirement of the user and they have been mentioned below:-
• Key-value data stores: Key-value NoSQL Database emphasize in an uncomplicated form and are suitable in accelerating an application to support high speed write and read processing of non-transactional data and these values are stored in the form of binary objects such as (video, text, JSON document, etc). This application software has complete control and power over the stored value which makes it a flexible NoSQL database model. These large unstructured data is partitioned and replicated (where the exact copy is produced) across a cluster to measure its scalability and availability. As a result, they are highly successful in producing a desirable and intended result at scaling applications that they deal with high-velocity data.
• Document Database: They usually pair each key with a complex data structure that consists of multiple connected parts commonly known as a document. Documents contain Key Array pairs or Key-Value pairs ( a set of two linked data items, where "Key" stands for unique identifiers and "Value" is the actual data that has been identified). Some of the examples include - Mongo Db, Cosmos Db, and IBM Domino.
• Wide-column stores: These types of Database make the most effective use for queries over large datasets and instead of tows they store columns of data together. Examples such as Cassandra, Scylla, Hbase.
• Graph stores: They collect and store information about graphs, a network such as social connections, road maps, and transport links. Examples include Neo4j, Allegro graph.
The Best NoSQL Database
• Mongo DB: Mongo DB is a cross-platform document-oriented database program and is the most popular database for modern apps as it can be operated on different types of computers which include both hardware and software systems that are document-oriented. They use JSON like documents to store any data. It is written in C++.
• Redis: Redis is the most famous memory data structure store that is composed in C language. It is an open soft software that is released under a BSD 3-clause license.
• Cassandra: Cassandra is one such database that is designed to handle a large amount of data across many commodity servers providing high availability with less point of failure. It was developed at Facebook for inbox search.
• Couchbase: Couchbase server is a document-oriented database software package that is used effectively for interactive applications. It has a flexible data model and is easily scalable providing consistently high performance. It decreases the cost of network, memory, and storage.
• Oracle NoSQL Database: Oracle NoSQL Database is a nonrelational, horizontally scalable key-value database with multiple higher-level data and implements a map from user-defined keys to opaque data items. Oracle Database 18c provides customers with high-performance, reliability and secure platform. They also ensure that user data is not tampered with through prompt updates.
• Amazon DYNAMODB: Amazon Dynamodb is executed by a primary key identified by the user that uniquely identifies them. The customers are also relieved from the burden of operating and scaling a distributed database. Hence hardware provisioning, configuration, replication, cluster scaling, etc are managed by Amazon. They reduce the difficulty of managing the high availability and scaling at peak times.
• Memcached: is an open-source providing high performance that is intended to speed up dynamic web applications by slightly decreasing the database load. This database is now been used by Netlog, Facebook, Flickr, Youtube, Twitter, Wikipedia and efficient for high database load. They also combine memory caches into a logical pool and the installation requires relatively lesser time and is quite fast.
• Neo4j: As they are popularly known as the native graph database since it effectively implements property graph model down to storage level which means that data is stored exactly and the database uses pointers to navigate and traverse the graph. These Neo4j has got both community edition and Enterprise edition of the database. The enterprise edition includes all that community edition has to offer plus an additional enterprise requirement such as backups, clustering and failover abilities. They also support UNIQUE constraints and contain a UI to execute CQL commands. It is easy to retrieve its adjacent node or relationship details without joins or indexes and does not require complex joins to retrieve data. They have also got a simplified tuning and high availability for large enterprise real-time applications.
• HBASE: HBASE can be termed as a distributed and non-relational database that is designed for the big table database by google. You can add servers anytime to increase the capacity. Hbase is composed of Java 8 and multiple master nodes will ensure a higher availability of your data. It is licensed under Apache. Hbase companies are simple to utilize Java API for customer access also. They support automatic failure and are linearly scalable also provide data replication too. They handle large datasets on top of HDFS file storage and have got a flexible schema that is not executed or organized in a predefined manner with high speed. They also provide low latency access to single rows from billion of records.