Cassandra is a structured store. It has a rich data model that goes beyond a simple key-value model. This is a good thing as some of the complexity can be pushed to Cassandra, leading to simpler and more efficient applications. There is problem though: the guys who designed Cassandra have given complex names to the (rather simple) data model elements. This post tries to explain(again): “WTF is a SuperColumn“?

Data model elements

You can also download a PDF version.

Column

A name value pair (contains also a time-stamp, not represented here for the sake of clarity).
Cassandra Column

Column

Super Column

A sorted associative array of columns.

Super Column

Super Column

Column Family

A container for columns sorted by their names. Column Families are referenced and sorted by row keys.

Column Family

Column Family

Super Column Family

A container for super columns sorted by their names. Like Column Families,  Super Column Families are referenced and sorted by row keys.

Super Column Family

Super Column Family

Keyspace

Top level element of a schema. Container for column families.

Examples

These examples are extracted from the model of a simple twitter clone discussed here.  I picked the statuses column family and the user relationships super column family.

Statuses Column Family

Statuses Column Family

User Relationships Super Column Family

User Relationships Super Column Family