This blog is the first part of a series exploring the database technical landscape. Databases are typically layers of software on top of storage that provides structure to data in order to extract information from them. Fun fact, data is a collection of facts while information puts those facts into context.
There are multiple layers in the database technical landscape. One of these layers are database models, which dictate the capabilities the data storage capabilities a database will have and the use case that they fit best.
Database Models Explained
There are multiple types (or models) of databases but most fall into one of three major categories, relational (RDBMS) and NoSQL databases. A relational database is a collection of data items with pre-defined relationships between them. NoSQL databases are typically non-tabular databases and store data differently (examples are document, key-value, wide-column, and graph).Multi-model databases provide the ability to store different models in a single location.
Some common database models include:
|Key-Value||Values are associated with specific keys. Data structures are very basic. Typically stored in-memory and are very fast. Mostly used for caching or as layer over a different persistent database.||Redis|
|Wide Column||An expansion of the key-value model but where keys can associate with many columns. This model allows for grouped data structures which key-value models do not. Used when there are frequent write operations and infrequent read operations.||Cassandra|
|Document Based||The database is built using documents. Each document is a container for key-value pairs. Documents are grouped together into collections. Collections can be organized as a data structure resembling a hierarchy.||MongoDB|
|Relational||Data is arranged into different tables which contains columns (attributes) and rows (entity of the attributes). This is the most popular database model.||MySQL|
|Graph||Data is represented as nodes and the relation between them are directed edges. Allows for greater data modeling flexibility compared to relational models.||Neo4j|
|Search-Based||A database built for indexing and querying information. Optimized for searching through large volumes of data based on user queries and then returns results ranked by relevance.||InfluxDB|
|Multi-Model||Built to support multiple database models against a single backend.||Oracle Database|