The list below mentions the different kinds of NoSQL database systems you may encounter.
A document consists of a collection of key-value pairs. Each value can be one of the four primitive types: String, Number, Boolean, Null, or it can be an object. Objects are accessed using paths that indicate their location within the hierarchy of key-value pairs.
Document-based NoSQL database systems are best suited to storing and retrieving complex data types that do not have a predefined schema.
A typical example of a document database is MongoDB.
In a column store, data is stored as a collection of column families. Each column family holds multiple columns, and each column has one value per row/record. One possible use of column stores is to store time-series data.
An example of a column store database is Cassandra.
In a key-value pair store, data is stored as a collection of key/value pairs. The key is used to locate the data in the collection. In this type, records are assigned unique primary keys and can be accessed using them. For each record, values are stored with the primary key.
An example of a key-value store is Redis.
In a graph database, data is stored in the form of vertices and edges. A vertex represents an object, whereas an edge represents a relationship between two objects. Vertex and edge data can be stored as either documents or plain key/value pairs.
A graph database is designed to model real-world relationships between data entities.
An example of a graph database is Neo4j.
This NoSQL database system implements Google BigTable, a distributed storage system. It’s recommended to use BigTable when your data doesn’t fit in memory, you need random read/write access, and most operations are full table scans.
An example of a BigTable implementation is HBase.
Spatial databases store data in geographical coordinates to define the absolute position. We can use a spatial index to locate records that are close to one another.
An example of a spatial database is PostGIS.
A database with a MapReduce programming model provides a means to process large datasets. It takes the data from the storage layer, processes it in a distributed data processing framework, and hands back the new data to be served for further reading or add/delete operation to underlying NoSQL storage components. Typically, an additional aggregation phase is required to bring the data back to the single-node state before returning it to the storage layer.
The most well-known NoSQL system that employs this programming model is Hadoop. The underlying storage system in Hadoop is HDFS.
In a multi-model database, different models are combined into a single system. This multi-model database includes data storage options of key/value, relational, and document.
An example of a multi-model database system is OrientDB.
View all Courses