Apache Cassandra is a distributed wide-column NoSQL database designed for high-availability writes at massive scale — it powers the write-heavy data stores of Netflix (viewing history), Instagram (user activity), and Uber (trip events) at petabyte scale with no single point of failure. Cassandra's architecture is a ring of peer nodes (no master/slave) where data is distributed across nodes using consistent hashing on the partition key. Every node can accept reads and writes, and replication ensures multiple copies of each partition exist across the ring — making Cassandra fault-tolerant by design rather than by failover configuration.
CQL (Cassandra Query Language) resembles SQL in syntax but differs fundamentally in what is and is not allowed. Because Cassandra distributes data across nodes based on the partition key, queries that do not include the partition key in the WHERE clause would require scanning all nodes — which Cassandra does not support (unlike PostgreSQL's sequential scan). Every CQL query must include an equality condition on the full partition key. Secondary indexes are supported but limited — they work correctly only for low-cardinality columns queried with equality predicates. Range conditions and sorting are supported only on clustering columns within a partition.
For data engineers, Cassandra is encountered as a high-throughput source system for time-series event data: IoT sensor readings, user activity logs, application telemetry, and financial tick data. The data engineering task is to extract from Cassandra (using the DataStax Spark Cassandra Connector or token-range-based pagination with the driver) and load into a columnar analytical store (BigQuery, Redshift, Snowflake) for complex aggregation queries that Cassandra cannot efficiently support. Understanding Cassandra's partition model explains why you cannot simply run GROUP BY in Cassandra — and why those aggregations must happen downstream.