High-Performance, Non Relational Databases With Flexible Data Models
High-Performance, Non Relational Databases With Flexible Data Models
Definition of nosql
NoSQL is not a relational database.
The reality is that a relational database model may not be the best solution for all situations.
It is called not only SQL or non sql or non relational.
Early NoSQL databases used for web and cloud applications.
NoSQL databases are document based, key-value pairs, graph databases or wide-column stores.
SQL NOSQL
SQL databases are primarily called as Relational NoSQL database are primarily called as non-relational or
Databases (RDBMS) distributed database.
SQL databases are table based databases NoSQL databases are document based, key-value pairs,
graph databases or wide-column stores.
SQL databases have predefined schema NoSQL databases have dynamic schema for unstructured
data.
SQL databases are vertically scalable NoSQL databases are horizontally scalable
SQL databases uses SQL ( structured query language ) NoSQL database, queries are focused on collection of
for defining and manipulating the data, documents.
NoSQL database examples: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j and CouchDb
SQL vs. NoSQL Terminology
The following table compares terminology used by select NoSQL databases with terminology used by SQL
databases.
For decades, the predominant data model that was used for application development was the relational data model
used by relational databases such as Oracle, DB2, SQL Server, MySQL, and PostgreSQL. It wasn’t until the mid to
late 2000s that other data models began to gain significant adoption and usage. To differentiate and categorize these
new classes of databases and data models, the term “NoSQL” was coined. Often the term “NoSQL” is used
interchangeably with “nonrelational.”
NoSQL databases use a variety of data models for accessing and managing data, such as document, graph, key-
value, in-memory, and search. These types of databases are optimized specifically for applications that require large
data volume, low latency, and flexible data models, which are achieved by relaxing some of the data consistency
restrictions of other databases.
Consider the example of modeling the schema for a simple book database:
In a relational database, a book record is often dissembled (or “normalized”) and stored in separate tables,
and relationships are defined by primary and foreign key constraints. In this example, the Books table has
columns for ISBN, Book Title, and Edition Number, the Authors table has columns for AuthorID and
Author Name, and finally the Author-ISBN table has columns for AuthorID and ISBN. The relational
model is designed to enable the database to enforce referential integrity between tables in the database,
normalized to reduce the redundancy, and generally optimized for storage.
In a NoSQL database, a book record is usually stored as a JSON document. For each book, the item, ISBN,
Book Title, Edition Number, Author Name, and AuthorID are stored as attributes in a single document. In
this model, data is optimized for intuitive development and horizontal scalability.
Why should you use a NoSQL database?
NoSQL databases are a great fit for many modern applications such as mobile, web, and gaming that require
flexible, scalable, high-performance, and highly functional databases to provide great user experiences.
Flexibility: NoSQL databases generally provide flexible schemas that enable faster and more iterative
development. The flexible data model makes NoSQL databases ideal for semi-structured and unstructured
data.
Scalability: NoSQL databases are generally designed to scale out by using distributed clusters of hardware
instead of scaling up by adding expensive and robust servers. Some cloud providers handle these operations
behind-the-scenes as a fully managed service.
High-performance: NoSQL database are optimized for specific data models (such as document, key-value,
and graph) and access patterns that enable higher performance than trying to accomplish similar
functionality with relational databases.
Highly functional: NoSQL databases provide highly functional APIs and data types that are purpose built
for each of their respective data models.
Key-value: Key-value databases are highly partitionable and allow horizontal scaling at scales that other types of
databases cannot achieve. Use cases such as gaming, ad tech, and IoT lend themselves particularly well to the key-
value data model. Amazon DynamoDB is designed to provide consistent single-digit millisecond latency for any
scale of workloads. This consistent performance is a big part of why the Snapchat Stories feature, which includes
Snapchat's largest storage write workload, moved to DynamoDB.
Document: Some developers do not think of their data model in terms of denormalized rows and columns.
Typically, in the application tier, data is represented as a JSON document because it is more intuitive for developers
to think of their data model as a document. The popularity of document databases has grown because developers can
persist data in a database by using the same document model format that they use in their application code.
DynamoDB and MongoDB are popular document databases that provide powerful and intuitive APIs for flexible
and agile development.
Graph: A graph database’s purpose is to make it easy to build and run applications that work with highly connected
datasets. Typical use cases for a graph database include social networking, recommendation engines, fraud
detection, and knowledge graphs. Amazon Neptune is a fully-managed graph database service. Neptune supports
both the Property Graph model and the Resource Description Framework (RDF), providing the choice of two graph
APIs: TinkerPop and RDF/SPARQL. Popular graph databases include Neo4j and Giraph.
In-memory: Gaming and ad-tech applications have use cases such as leaderboards, session stores, and real-time
analytics that require microsecond response times and can have large spikes in traffic coming at any time. Amazon
ElastiCache offers Memcached and Redis, to serve low-latency, high-throughput workloads, such as McDonald’s,
that cannot be served with disk-based data stores. Amazon DynamoDB Accelerator (DAX) is another example of a
purpose-built data store. DAX makes DynamoDB reads an order of magnitude faster.
Search: Many applications output logs to help developers troubleshoot issues. Amazon Elasticsearch Service
(Amazon ES) is purpose built for providing near-real-time visualizations and analytics of machine-generated data by
indexing, aggregating, and searching semistructured logs and metrics. Amazon ES also is a powerful, high-
performance search engine for full-text search use cases. Expedia is using more than 150 Amazon ES domains, 30
TB of data, and 30 billion documents for a variety of mission-critical use cases, ranging from operational monitoring
and troubleshooting to distributed application stack tracing and pricing optimization.
There are various ways to classify NoSQL databases, with different categories and subcategories, some of which
overlap. What follows is a basic classification by data model, with examples: