Skip to main content

Types of Databases

RDBMS / Relational database (ACID)

A relational database management system (RDBMS) is a program that allows you to create, update, and administer a relational database. Most relational database management systems use the SQL language to access the database.

A relational database is a type of database. It uses a structure that allows us to identify and access datain relationto another piece of data in the database. Often, data in a relational database is organized into tables.

Columns - Tables can have hundreds, thousands, sometimes even millions of columns of data. Columns are labeled with a descriptive name (say, age) and have a specific data type

Rows/Records - Tables can also have many rows of data. These rows are often called records

  • MySQL Cluster
  • PostgreSQL
  • VoltDB
  • Clustrix
  • ScaleBase
  • NimbusDB
  • Megastore over BigTable
  • MariaDB
  • SQLite

NoSQL Databases (Scales better, Higher availability)

  • While the traditional SQL can be effectively used to handle large amount of structured data, we need NoSQL (Not Only SQL) to handle unstructured data
  • NoSQL databases store unstructured data with no particular schema
  • Each row can have its own set of column values. NoSQL gives better performance in storing massive amount of data

Key-Value

  • Project Voldemort
  • Riak
  • Redis
  • Aerospike
  • Scalaris
  • Tokyo cabinet
  • Memcached, membrain, and membase
  • LF (fully decentralized fully replicated key/value store.)
  • Etcd

Wide Column / Extensible Record Stores / Column-family

Can have many many different types of column

  • HBase
  • HyperTable
  • Cassandra

Column Oriented Database

Not to be confused with column-family databases, column-oriented databases are very similar to relational databases, but store data on disk by column instead of by row. This means that all of the data for a single column is together, allowing for faster aggregation on larger data sets. Since the columns are separate from each other, inserting or updating values is a performance intensive task, so column-oriented databases are primarily used for analytical work where entire data sets can be preloaded at one time.- Druid

Object Oriented Database

Object-oriented databases store data items as objects, seeking to bridge the gap between the representations used by objected-oriented programming languages and databases. Although this solves many problems with translating between different data paradigms, historically, adoption has suffered due to increased complexity, lack of standardization, and difficulty decoupling the data from the original application.

Document Oriented Database / Document Stores

  • Semi-structured data (XML, JSON)
  • Flat File Database

Databases

  • SimpleDB
  • CouchDB
  • MongoDB
  • Terrastore
  • SQLite
  • RethinkDB

https://rethinkdb.com

Hierarchical database / Graph based database (Entities, Relationships)

Examples

  • Filesystems
  • DNS
  • LDAP directories

Neo4j

Neo4j- OLTP graph database (embedded and high availability) (open source, noSQL graph database)

Network databases

  • IDMS

Time-Series databases

  • TimeScale DB (TSDB)
  • InfluxDB
  • OpenTSDB
  • Prometheus

In-memory databases

  • Redis
  • RocksDB
  • Memcached (a distributed memory object caching system)

In-Memory Databases (IMDB) and In-Memory Data Grids (IMDG)

One of the crucial differences between In-Memory Data Grids and In-Memory Databases lies in the ability to scale to hundreds and thousands of servers. That is the In-Memory Data Grid'sinherent capability for such scale due to their MPP (Massively Parallel Processing) architecture, and the In-Memory Database'sexplicit inability to scale due to fact that SQL joins, in general, cannot be efficiently performed in a distribution context.

https://www.gridgain.com/resources/blog/in-memory-database-vs-in-memory-data-grid-revisited

Cloud databases / on-line databases / Managed services

Object Storage

Object storage (also known asobject-based storage) is a computer data storage architecture that manages data as objects, as opposed to other storage architectures like file systems which manages data as a file hierarchy, and block storage which manages data as blocks within sectors and tracks.Each object typically includes the data itself, a variable amount of metadata, and a globally unique identifier. Object storage can be implemented at multiple levels, including the device level (object-storage device), the system level, and the interface level. In each case, object storage seeks to enable capabilities not addressed by other storage architectures, like interfaces that can be directly programmable by the application, a namespace that can span multiple instances of physical hardware, and data-management functions like data replication and data distribution at object-level granularity.

Object storage systems allow retention of massive amounts of unstructured data. Object storage is used for purposes such as storing photos on Facebook, songs on Spotify, or files in online collaboration services, such as Dropbox.- S3

  • Azure Blob Storage

https://en.wikipedia.org/wiki/Object_storage

NewSQL databases

NewSQL databases follow the relational structure and semantics, but are built using more modern, scalable designs. The goal is to offer greater scalability than relational databases and greaterconsistency guaranteesthan NoSQL alternatives. They achieve this by sacrificing certain amounts of availability in the event of a networking partition. The trade offs between consistency and availability is a fundamental problem of distributed databases described by theCAP theorem.- MemSQL

  • VoltDB
  • Spanner
  • Calvin
  • CockroachDB
  • FaunaDB

https://www.youtube.com/watch?v=2CipVwISumA&t=661s&ab_channel=Fireship

  • yugabyteDB

Multi-model databases

Multi-model databases are databases that combine the functionality of more than one type of database. The benefits of this approach are clear - the same system can use different representations for different types of data.- ArangoDB

  • OrientDB
  • Couchbase

Semantic RDF graph database

Semantic RDF graph databases are databases that map objects using the Resource Description Framework. This framework a way to describe, in detail, objects and their relationships by categorizing pieces of data and connections. The idea is to map subjects, actions, and objects like you would in a sentence (for example, "Bill calls Sue"). For most use cases, labeled property graphs, usually just called graph databases, can express relationships more flexibly and concisely.

Ledger Databases

Embedded databases

https://github.com/Jsondb/jsondb-core

Resources