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