Lesson 2: Databases#
SQL vs. NoSQL#
SQL (Relational Databases)#
- Structure: Structured data with predefined schemas (Tables, Rows, Columns).
- Query Language: SQL (Structured Query Language).
- ACID Compliance: Strong guarantees for Atomicity, Consistency, Isolation, Durability.
- Examples: MySQL, PostgreSQL, Oracle.
- Best for: Complex queries, financial transactions.
NoSQL (Non-Relational Databases)#
- Structure: Flexible schemas (Key-Value, Document, Graph, Column-Family).
- Scalability: Designed for horizontal scaling.
- Examples: MongoDB (Document), Redis (Key-Value), Cassandra (Column).
- Best for: Rapidly changing data, massive scale, unstructured data.
Scaling Databases#
Replication#
Copying data to multiple servers.
- Master-Slave: Writes go to Master, Reads go to Slaves. Good for read-heavy systems.
- Master-Master: Writes can go to any node. Complex conflict resolution needed.
Sharding#
Partitioning data across multiple servers (e.g., Users A-M on Server 1, N-Z on Server 2).
- Pros: Handles massive data volumes.
- Cons: Complex joins, rebalancing data is hard.
🛠️ Sruja Perspective: Modeling Databases#
Sruja allows you to define the type of database and its role in the system.
architecture "User Management" {
container UserDB "User Database" {
technology "PostgreSQL"
tags "relational", "primary"
description "Stores user profiles and authentication data."
}
container SessionStore "Session Cache" {
technology "Redis"
tags "key-value", "cache"
description "Stores active user sessions for fast access."
}
}