NoSQL Database types

You are currently viewing NoSQL Database types
NoSQL Database types

NoSql databases Key-value stores, Document stores, Wide column databases, Graph databases, Multi Model databases are the most widely adopted ones. Every NoSQL database has unique purposes, offerings and limitations. If you want to use a NoSQL database, then you must first understand about NoSQL database types and differences between each type.

NoSQL database types are categorized based upon the database’s underlying data structure and data handling mechanism. Every NoSQL database type aims to solve a unique problem for the real world. Multi model databases combine powers of 2 or more NoSQL types into a single database to have a bigger impact.

What is NoSQL?

NoSQL databases are non tabular model databases, providing a mechanism for retrieval and storage data differently than relational databases. The data structures used in NoSQL databases are different than used in relational databases, which makes specific operations very fast.

NoSQL databases are also known as non SQL, not only SQL and non relational databases. Based upon different data structure usage, there are different types of NoSQL databases. Every NoSQL database targets a specific business problem. Most of the NoSQL databases don’t respect data consistency in comparison to speed, availability or partition tolerance.  

NoSQL vs SQL Databases

NoSQL databases are different from SQL databases in a number of ways. Few of the most important differences between these two types are following:

SQL DatabasesNoSQL Databases
SQL databases are called relational database management systems.NoSQL databases are called non relational database management systems.
SQL Databases have tabular structureNoSQL database have free form structures, mostly categorized into 5 types
Schema should be fixed in terms of tablesDynamic schema with JSON documents, key-value pair, wide column and graph data structures
SQL database support vertical scaling NoSQL databases support horizontal scaling.
Multi record ACID properties are supportedMost NoSQL databases don’t support it. Only few of NoSQL databases support it
SQL databases support structured query languageNoSQL databases support unstructured query languages which vary from database to database.
SQL databases support foreign keys to restrict tables dataNoSQL databases does not support foreign keys
Every SQL database supports joinsVery few of NoSQL databases support joins. Majority of databases don’t support it
NoSQL vs SQL Databases

Types of NoSQL databases

NoSQL databases use different or hybrid data structures internally, resulting in these to be categorized as individual types. Based upon internal mechanism of NoSQL databases, these can be divided into following categories:

  1. Key-value stores
  2. Document stores
  3. Wide column databases
  4. Graph databases
  5. Multi Model databases

1. Key-Value Stores

Key-value stores are the simplest type of NoSQL databases, supporting data elements consisting of key and value pairs. A key is a unique name to identify the data element, helps in search, view, insert, edit and delete operations. Every key is linked to a value, a value can be a string, number, JSON, Blob or anything. A value even contains further key value pairs inside it.

A key-value store database mostly uses a hash table like data structure to uniquely save and retrieve every key value pair. Due to the simplicity of key pair data structure, few operations are very fast like search, retrieve etc.

1.1 key value store variations

There are many different types of key value store databases. The difference lies in underlying handling of key value pairs for storage and processing. All key value store databases can be categorized into 4 categories: Key value cache, Key value store, Key value eventually consistent, Key value store ordered.

1.2 key value store use cases

There are a number of use cases for key value stores in the software development cycle. Following are the few mostly known scenarios are:

  • User sessions/tokens: Web applications may store user sessions or authorization tokens in a key-value store. User identifier like username or email is used as key and session or authorization token is saved as value, together saved a key value store
  • Guest Checkout: Few applications allow guest checkout, since there is no logged in user. So generally a user key is assigned automatically to the user on the front-end and all his cart details are saved against this user key in the key-value store.
  • Cache: Many applications need to read/write a few variables more often. If these variables are stored in a database or file, then IO read/write time slows down the application. In such scenarios, in-memory key values stores are used, which helps in faster access to data.

1.3 key value store real world implementation examples

  • Twitter first used Redis for Timeline service in 2010. Twitter also used Redis in its Ads service.
  • Quora uses Memcached to cache the results from persistent databases. Results of a wide variety of functions in the same cluster are cached together using Memcached.
  • Pinterest uses Redis to store a list of users who you follow, boards (and their related users) who you follow, your followers, people who follow your boards,boards you unfollowed after following a user, followers and unfollowers of each board etc.

1.4 key value store examples

Key value store databases provide a wide range of different products. Few of key value store databases are totally free, few are paid, few are partially paid and few are provided as SAAS to pay as per usage.

Database NameLicense typePriceDownload Link
Apache IgniteOpen-sourceFreeVisit Apache Ignite
CoherenceCommunity, Commercial EditionsFree and paidVisit Coherence
eXtreme ScalePaidPaidVisit eXtreme Scale
HazelcastOpen-sourceFreeVisit Hazelcast
InfinispanApache License 2.0FreeVisit Infinispan
MemcachedOpen-sourceFreeVisit Memcached
RedisOpen-sourceFreeVisit Redis
AppFabricFreewareFreeVisit AppFabric
AerospikeCommunity, Commercial EditionsFree and paidVisit Aerospike
CouchbaseCommunity, Commercial EditionsFree and paidVisit Couchbase
Oracle NoSQL DatabaseCommunity, Commercial EditionsFree and paidVisit Oracle NoSQL
RiakCommunity, Commercial EditionsFree and paidVisit Riak
VoldemortApache License 2.0FreeVisit Voldemort
InfinityDBOpen-sourceFreeVisit InfinityDB
LMDBOpenLDAP Public LicenseFreeVisit LMDB
MemcacheDBOpen-sourceFreeVisit MemcacheDB
SciDBAGPL v3FreeVisit SciDB
ZooKeeperApache License 2.0FreeVisit ZooKeeper
key value store examples

2. Document Store

A document store stores data in JSON, XML or BSON formats. A document can contain any number of fields, every field has one value which can be of any data type (number, string, binary, document). Document stores support nested documents, a document can have a field which may again contain a document or not. The fields inside a document store can be indexed for fast query results.

Document store databases are very popular due to their format which can be easily converted to an object at the application layer, which makes document storage and retrieval more easy. 

The most widely used document databases are those which focus on scale-out architecture, giving clear visibility to scalability factors including both traffic and data volume.

2.1 Document Store use cases

  • Content Management: Few applications some time require to collect and aggregate data from different sources, process it and then represent further. Changes in such type of structure are non predictable, but usage of document store makes it easy to change.
  • Ecommerce search: In e-commerce applications, search is the most critical operation. Search needs to be super fast and accurate. Many applications use document stores to search, view products to make user experience good and make applications super fast.

2.2 Document Store real world implementation examples

  • Cisco used Couchbase to create a highly scalable media platform to support 100+ billion user sessions per year. It helped in delivering reliable low latency and consistent 500-microsecond response times at massive scale
  • Linkedin uses Couchbase for all in-memory storage in the datacenter, powering 10+ million queries per second. It has tremendous performance at scale, averaging <4ms latency for over 2.5 billion items
  • Liberty Mutual is running over 700 MongoDB clusters powering a whole range of internal and client-facing services, using Ops Manager for provisioning and administration.

2.3 Document Store examples

There are a number of different free/paid document store solutions present. Every solution tries to solve a unique problem.

Database NameLicense typePriceDownload Link
BaseXBSDFreeVisit BaseX
CouchDBApache License 2.0FreeVisit CouchDB
DocumentDBProprietaryPay as per useVisit DocumentDB
Google Cloud FirestoreProprietaryPay as per useVisit Google Cloud Firestore
eXist-dbLGPLFreeVisit eXist-db
MongoDBOpen source,SAASFree, paidVisit MongoDB
QizxCommercialpaidVisit Qizx
RethinkDBApache License 2.0FreeVisit RethinkDB
ElasticsearchApache License 2.0, ProprietaryFree, paidVisit Elasticsearch
Document Store examples

3. Wide column databases

Wide column databases store data in column oriented models and are efficient to hold a very large number of dynamic columns. Related columns can be grouped together to form column families. A column family contains multiple rows, each containing a unique row key to identify the row columns within the family.

A wide column database typical structure contains following terms:

  • Column family:  A column family consists of multiple rows.
  • Row: Each row contains a unique row identifier to identify the columns data. Every row can have a different number of columns from other rows.
  • Column: Each column is contained in its row. A column consists of a name value pair along with a timestamp of its creation date time.
Wide column database example
Wide column database example

In a wide column database, a row is constructed with a unique row key, columns including key value pairs and timestamp. A generalized row structure is shown below:

Wide column database structure
Wide column database structure

3.1 Wide-Column database use cases

Wide-column databases are mostly used in scenarios where columns are never fixed and data volume is very huge to process. Following are few use cases:

  • Sensor Logs: Internet of Things (IoT)  makes interactions possible among human beings, objects and networks via sensors, to monitor temperature, pressure, humidity, position, noise levels, size of an object etc. The continuous  data generated by sensors is very big and requires lots of storage and computation power.
  • Analytics systems: Analytics systems store huge amounts of data for user behavior, preferences and workflows. Same analytical system can hold different amounts of information for different platforms. Wide-column databases are ideal for such scenarios.

3.2 Wide-Column database real world implementation examples

  • Spotify uses Cassandra for personalization to store user profile & preference attributes. The metadata about entities like songs, album, playlists, artists, etc. is also saved in Cassandra.
  • Facebook initially used Hbase for handling Messages. The Messages infrastructure handled over 350 million users sending over nearly 15 billion person-to-person messages per month with Hbase.
  • Netflix is using Cassandra for cross-regional deployment to achieve scalability and avoiding single point of failure.

3.3 Wide-Column database examples

There are lots of wide column databases available, following are the most famous one:

Database NameLicense typePriceDownload Link
Amazon DynamoDBProprietaryPay as per useVisit Amazon DynamoDB
BigtableProprietaryPay as per useVisit Bigtable
CassandraApache License 2.0FreeVisit Cassandra
ScyllaProprietaryPaidVisit Scylla
HBaseApache License 2.0FreeVisit HBase
HypertableGNU Version 3FreeVisit Hypertable
Wide-Column database examples

4. Graph databases

A graph database is a NoSQL database that implements graph structures to represent and store data, which enables the usage of semantic queries for edges, nodes and properties. A graph is composed of two elements: node and relationship. 

In a graph database, a data item is stored as a node. The connection between the data items is called edge or link or relationship. The relationship of two nodes can have its own properties.

Accessing nodes and edges in a native graph database is much faster, efficient, constant-time operation and minimum retrieval time for traversal of millions of connections. Here native graph database means the database which internally uses graph data structure for its data management.

In a graph database, nodes can have relationships with different as well as of the same type node. For example, in the following example, a person can have 1 or more relationships with city and hotel nodes. A person can be a friend to another person as well.

Graph database example
Graph database example

4.1 Graph database use cases

Graph databases are used in scenarios where a single entity has multiple relations to others and to itself. Following are the few uses cases where graph database is the best fit to use:

  • Recommendation Engine: Recommendation engines use individual entity’s behavior and mapping with other entities which have full or partial mapping with data. It combinely creates a cluster of data points and gives the closest data points as recommendations. For example recommending online products, songs, videos, ads etc
  • Social Networking Platforms; A social network platform is built on top of graph databases. It helps the platform to query individual profile data as well profile relationships with other profiles. For example: Find a person with name xx, Person xx follows to which Person xx is followed by whom.

4.2 Graph database real world implementation examples

  • Walmart has been using Neo4j since 2013. Neo4j helps Walmart to understand behavior of online shoppers, relations between products and customers.
  • Medium uses Neo4j to maintain a social graph and personalized recommendations for a better user experience.

4.3 Graph database examples

Based upon the requirements, a graph database can be selected. Following are the most popular graph databases are:

Database NameLicense typePriceDownload Link
AllegroGraphCommercialPaidVisit AllegroGraph
InfiniteGraphProprietaryPaidVisit InfiniteGraph
Apache GiraphApache License 2.0FreeVisit Apache Giraph
Neo4JCommunity, Commercial EditionsFree, paidVisit Neo4J
VirtuosoCommercialPaidVisit Virtuoso
DgraphApache License 2.0, ProprietaryFree, paidVisit Dgraph
JanusGraphApache License 2.0, ProprietaryFreeVisit JanusGraph
TerminusDBGPL V2FreeVisit TerminusDB
Graph database examples

5. Multi Model databases

A multi model database is a NoSQL database which supports multiple data structures to store, retrieve and manipulate data items. A multi model database may support any combination of key value store, wide columns, graphs, relational DMS, documents, time-series or any other data store model. 

A multi model database combines the power of multiple data models together and provides a complete solution to enterprise needs. A multi model database at least provides a  combination of 2 or more NoSQL data structures, which make it easy to query for different types of queries. 

For example a system needs to query that among geographical locations of manufacturing plants which are top n with highest producing rate. Along with that, we just need a normal query that how many total machines are there for model x.

5.1 Multi Model database use cases

The multi model databases are the most commonly used NoSQL databases. Due to its hybrid structure, it provides power of multiple NoSQL stores into single.

  • Logistics: A logistics platform has lots of data like geo locations, resources, tasks, resources and tasks mapping, dependencies of tasks etc. The whole data has a diverse structure and is also highly interconnected. Reporting for logistics platforms involves standard queries like key value pairs as well geo or dependent tasks like graphical queries.
  • Content Management:  A content management system ideally maps to a document store for storing the dynamic data as a document store. But the content itself can have connections and links to different pieces of the same/different content, which makes use of grah structure.

5.2 Multi Model database real world implementation examples

  • IBM uses Apache Ignite for workloads acceleration in IBM Z Mainframes.
  • Yahoo! Japan uses Apache Ignite to process thousands of requests per second at super fast speed. 
  • AIRBUS is using MarkLogic to optimize flight hours, analyse operational data, improve aircraft maturity analysis and create predictive models for testing before delivery.

5.3 Multi Model database examples

There are lots of multi model free/paid solutions present in the market. Few of them which are mostly used are following:

Database NameLicense typePriceDownload Link
Apache IgniteApache License 2.0FreeVisit Apache Ignite
ArangoDBCommunity, Commercial EditionsFree, paidVisit ArangoDB
CouchbaseCommunity, Commercial EditionsFree, paidVisit Couchbase
FoundationDBApache License 2.0FreeVisit FoundationDB
MarkLogicProprietary6 Months freeVisit MarkLogic
OrientDBCommunity, Commercial EditionsFree, paidVisit OrientDB
Azure Cosmos DBProprietaryPay as per useVisit Azure Cosmos DB
Multi Model database examples

Conclusion

These 5 types are the most widely used NoSQL databases types.There are still a number of other NoSQL data types, as differ from each other due to underlying data structure and data handling. We hope this article will help you to understand NoSQL database types.