Data Systems
Cassandra Deep Dive
Apache Cassandra is a distributed NoSQL database designed for massive write throughput. Master its masterless architecture, consistent hashing, tunable consistency, and query-first data modeling.
- Masterless β Every node is equal; no single point of failure
- Tunable β Choose consistency level per query
- Linearly Scalable β Add nodes to increase capacity proportionally
Cassandra trades flexibility for availability and write performance.
Cassandra Architecture
Consistent Hashing
Query-First Data Modeling
| Relational | Cassandra |
|---|---|
| Normalize first | Denormalize first |
| JOINs at query time | Pre-join via duplication |
| Flexible queries | Fixed query patterns |
| Single table per entity | Multiple tables per entity |
Consistency Levels
| Level | Description | Nodes Required |
|---|---|---|
| ONE | Single node responds | 1 |
| QUORUM | Majority of replicas | (N/2 + 1) |
| ALL | All replicas respond | N |
| LOCAL_QUORUM | Majority in local DC | (N_local/2 + 1) |
| EACH_QUORUM | Majority in each DC | (N_dc/2 + 1) per DC |
Compaction
| Strategy | Best For | Trade-off |
|---|---|---|
| Size-Tiered | Write-heavy workloads | More space during compaction |
| Leveled | Read-heavy workloads | More I/O during compaction |
| Time-Window | Time-series data | Expiration handling |
Practice Exercises
-
Data Modeling: Design the Cassandra tables for a messaging app where users can: (a) get their message history, (b) get messages in a conversation, (c) search messages by sender.
-
Consistency Design: For a ride-sharing app, design the consistency levels for: (a) updating driver location, (b) processing payments, (c) matching riders with drivers.
-
Cluster Design: Design a Cassandra cluster for a global application with 100M daily active users across 3 regions. What replication factor, consistency level, and node count would you use?
-
Operational Planning: Your Cassandra cluster is experiencing hot partitions. Identify the causes and design a solution.
What to Learn Next
-> NoSQL Deep Dive Document, key-value, column-family, and graph databases overview.
-> DynamoDB Deep Dive DynamoDB internals, partitioning, and global tables.
-> Time-Series Databases InfluxDB, TimescaleDB, and time-series data models.
-> Data Replication Sync vs async replication, leader election, and consistency.
-> Data Partitioning Sharding strategies, consistent hashing, and partition keys.
-> Choosing the Right Database Systematic framework for database selection.