Cassandra's data model is a partitioned row store with tunable consistency. Rows are organized into tables; the first component of a table's primary key is the partition key; within a partition, rows are clustered by the remaining columns of the key. Other columns can be indexed separately from the primary key.
Tables can be created, dropped, and altered at runtime without blocking updates and queries.
Cassandra does not support joins or subqueries, except for batch analysis through Hadoop. Rather, Cassandra emphasizes denormalization through features like collections.
CQL is the default and primary interface into the Cassandra DBMS. CQL provides a new API to Cassandra that is simpler than the Thrift API for new applications. The Thrift API, the Cassandra Command Line Interface (CLI), and legacy versions of CQL expose the internal storage structure of Cassandra. CQL adds an abstraction layer that hides implementation details and provides native syntaxes for CQL collections and other common encodings. For more information about backward compatibility and working with database objects created outside of CQL version 3.0, see Working with pre-CQL 3 applications.