Day 10: Cassandra Lab Practice – Data Modeling

Day 10: Data Modeling in Cassandra

๐ŸŽฏ Objective:

Understand how to model data in Cassandra using query-first design – designing tables based on how you query, not how data is structured relationally.


๐Ÿ“˜ 1. Key Principles of Cassandra Data Modeling

  • Query-based design: Every table supports one query pattern.
  • Denormalization is OK: Duplicate data for different queries.
  • Avoid joins and multi-table operations
  • One table per query pattern is common

๐Ÿ“Š 2. Real-World Use Case Example

Use Case: Online Learning App

Entities:

  • Students
  • Courses
  • Enrollments
  • Attendance
  • Assessments

๐Ÿ”ง 3. Sample Table Designs

➤ Table 1: student_by_id

Query: Get student details by ID

CREATE TABLE test_lab.student_by_id (
  student_id uuid PRIMARY KEY,
  name text,
  email text,
  enrolled_on timestamp
);

➤ Table 2: courses_by_student

Query: List all courses for a student

CREATE TABLE test_lab.courses_by_student (
  student_id uuid,
  course_id text,
  course_name text,
  instructor text,
  PRIMARY KEY ((student_id), course_id)
);

➤ Table 3: attendance_by_class

Query: Get attendance by class and date

CREATE TABLE test_lab.attendance_by_class (
  class_id text,
  attendance_date date,
  student_id uuid,
  status text,
  PRIMARY KEY ((class_id, attendance_date), student_id)
);

⚖️ 4. Denormalized Table for Assessments

CREATE TABLE test_lab.assessments_by_course (
  course_id text,
  student_id uuid,
  exam_type text,
  marks int,
  PRIMARY KEY ((course_id), student_id, exam_type)
);

๐Ÿ“Œ 5. Modeling Guidelines Recap

Relational Concept Cassandra Strategy
Normalize Denormalize
Join Create separate table
Foreign Keys Not used in Cassandra
ACID Transactions Design around partitions

๐Ÿงช Day 10 Lab Tasks

  1. Design 3–4 tables for a simple application (blog, app, school, store)
  2. Use proper partition and clustering keys
  3. Avoid joins – assume each table is optimized for a specific query
  4. Practice inserting sample data and running sample queries

Checklist

Task Done
Understood query-first design
Created tables for multiple query patterns
Used compound partition & clustering keys
Avoided relational modeling concepts