NoSQL databases are built to work with specific data models. They have flexible schemas which are built to work with modern applications. This type of database is widely used since it is easy to develop applications using NoSQL and provides scalability. They can be used with a wide variety of data models which can be used to access and manage data. Such models include documents, graph, key-value, in-memory, and search.
NoSQL databases are optimized specifically to work with applications which require large volumes of data, low latency, and flexible data models. These features can be achieved by modifying some of the data consistency restrictions which are usually very strictly applied on other databases.
Let us look at the comparison of building a relational and a non-relational database.
In a relational database, records are usually normalized and stored in separate tables. Relationships are defined with the help of primary and foreign key constraints. A relational database model is designed so as to enable the model to enforce referential integrity between the records stored in the database. The tables are normalized so as to reduce redundancy and provide optimal storage techniques.
In contrast, in a NoSQL database, a record is usually stored in JSON format. Every column name is stored as an attribute within a single document. Such a model makes sure that data is optimized for horizontal scalability, and is used for flexible and intuitive development. NoSQL databases are a great choice to work with modern applications such as mobile, web, and gaming, since these fields require flexible, scalable, high-performing, and highly functional databases since they help in provisioning exceptional user experience.
There are different types of NoSQL databases. They have been discussed below:
This type of database can be partitioned and can be scaled horizontally. This is a highlight in the key-value database, which can’t be achieved with other databases. This type of database is used in gaming, ad-tech, and IoT industries. Amazon DynamoDB has been designed to provision consistent single-digit millisecond latency irrespective of the scale of the workloads. This performance plays an important role, and an example is Snapchat Stories feature, which works with DynamoDB.
In application code, data is represented as object or a JSON document since it is an efficient way to model data. Document database helps in storing and querying data in a database in the same format that is used in their application code. This type of flexible, semi-structured, and hierarchical nature of document databases help in modifying them easily based on the requirements which are modified on-the-go. They work very well with catalogs, user-profiles, and content management systems wherein every document is unique and changes overtime. Examples of document database include MongoDB and Amazon DocumentDB.
The intuition behind a graph database is to make it easy to build and run applications which work with high connectivity datasets. Use cases of graph databases include (but are not limited to) social networking sites, recommendation engines, fraud detection, and knowledge graphs. One such example is Amazon Neptune, which provides a fully-managed graph database service. It comes with support for Property Graph model and Resource Description framework (RDF) thereby providing two choices for graph APIs- TinkerPop and RDF/SPARQL.
This type of database is used with applications that work with real-time data which require microsecond response times, and there could be significant spikes in the incoming traffic at any point in time. Some applications which use in-memory databases are gaming and ad-tech apps which need leader boards, session stores, and real time analytics. Amazon ElastiCache provides Memcached and Redis, which help provide low latency, and high throughput workloads. Another example is the Amazon DynamoDB Accelerator (DAX) which is a custom build data storage system. DAX helps in improving the DynamoDB reads.
Output logs helps developers in troubleshooting certain issues. One such example is Amazon Elastic Search Service which is customized to provide near-real-time visualizations and analytics of data which has been generated by machine with the help of indexing, aggregating and searching large number of semi-structure logs and metrics. ES is a powerful search engine that can be used for full text search use case.
In this post, we understood how non-relational databases are different in comparison to relational databases.
Non-relational databases and Relational database