Types of Databases & When to Use them

Databases are knowledge gods of our application (Fun term right? Yeah I think so too). And just like gods Databases are many, we have so many options to choose from.

When you're a backend developer you cannot dodge this question in interviews. The understanding not just helps you in the interview but also signals that you're a developer who knows the right tool for right job

In-Memory DB

  • Used mainly for caching

  • Data is stored as key value pairs

  • The values are stored in-memory and are volatile

  • common examples are redis, memcache, etcd(used by kubernetes)

Relational

  • It works like a charm for well structured data with relations

  • Supports ACID properties Works well for applications that needs atomic transactions

  • Horizontal scaling is not supported but most cloud platforms are trying to work around them

  • Famous examples are MySQL & Postgres

  • Well suited for transactional workloads OLTP

NoSQL

DocumentDB

  • Works well for unstructured data

  • Faster reads means increased perfomance

  • Examples are Mongodb, Cassandra

  • DB can be horizontally and vertically scaled

ColumnDB

  • Did I hear analytics, use ColumnDB

  • Because analytics involves comparing two features X and Y and you would be comparing a data in a particular colum

  • They are typically less efficient for inserting new data (Why?)

  • Well suited for OLAP

Graph

  • Works well for Data that's structured in the form of graphs

  • Unlike relational DB the data is defined in the form of node and edges(it's relationshops)

  • Best usecase is for social media application like FB, twitter

  • Example: Neo4j

TimeSeries DBs

  • Timeseries database stores data against a time and other metadata

  • Best example is monitoring applications

  • Data is stored in a hypertable and chunked into columns of metadata & time agaisnt the actual data

  • This Talk clearly explains it https://www.youtube.com/watch?v=eQKbbCg0NqE

  • InfluxDB, TimeseriesDB, Prometheus

Datawarehouse

MultiModel DB


Last updated