Super columns are a way to group multiple columns. Every super column must have a different name, just like regular columns. Different super columns may hold sub-columns with the same name.
Grouping multiple columns in this way allows the denormalization of an entire row into one supercolumn. Data that is otherwise stored separately as a row in a column family can also be included within a supercolumn family as a supercolumn. This provides very fast lookup of such data by a value other than its row key.
Super columns are frequently used to hold a single record where each field in the record is represented by a sub-column. For example, the name of a super column might be the ID of a transaction and each sub-column could hold some attribute of the transaction. For example, if a transactions row like the one describe had two entries, it might look like:
{
‘trans-009123812’:
{
‘date’: ‘01/02/2010’,
‘amount’: 15000
},
‘trans-009123813’:
{
‘date’: ‘01/03/2010’,
‘amount’: 4500
}
}
As described in the indexes section, super columns can be useful for indexes with several (but not a huge number) of matches per indexed value.
Any request for a sub-column deserializes all sub-columns for that super column, so you should avoid data models that rely on on large numbers of sub-columns.