列(column)是Cassandra数据模型中的最基本的数据结构单元。列是一个由列名(key)、值(value)、时间戳(timestamp)构成的三元组。在关系型数据库中,你需要先定义列的名称和和列类型来组成表结构,在插入数据的时候,客户端只需要往预先定义好的表结构插入数值就行了,数据库提供表名称和列名,客户端负责插入数据;而在Cassandra中,数据库只负责提供表名称,列名和数值是由客户端提供的。在关系型数据库中,每行都有相同的列,但在Cassandra中,每行可以有相同的列,也可以有不同的列

标准列(Standard Columm)

标准列的数据结构

标准列
名称【】【】时间戳【】

['CF']['Row Key']['Column']

列的实际存放例子

(name=age, value=18, timestamp=1527692421898000)

在上面的例子中,列名是年龄age,值是18。

[default@mytest] get users['zhangpeng'];
=> (name=age, value=18, timestamp=1527692421898000)
=> (name=birthday, value=19890507, timestamp=1529333838055000)
=> (name=first, value=zhang, timestamp=1527692409752000)
=> (name=last, value=peng, timestamp=1527692416150000)

在该例子中,标准列users中的用户“zhangpeng”作为该行数据区分其他行数据的唯一的row key(主键)。

超级列(Super Column)

超级列是一种特殊的列。两种列都是键/值对。但标准列的值是字节组,而超级列的值是一个子列的映射,超级列不能存储其他超级列的映射,也就是说,超级列仅允许使用一层,但是会它不并不限制列的数量。

超级列的数据结构包含它的名字和它存储的列,它的名字和标准列一样,但是存储的值是一个列的映射。

超级列
名称【】col1:key1,col2:key2,col3:key3,col4:key4【】时间戳【】

['CF']['Row Key']['SuperColumn']['SubColumn']

[default@mytest] create column family hg18
... with column_type = Super
... and comparator = UTF8Type
... and key_validation_class=UTF8Type
... and default_validation_class=UTF8Type
... and subcomparator = UTF8Type
... and column_metadata = [
... {column_name:isExon, validation_class:UTF8Type}
... {column_name:cons, validation_class:IntegerType}
... ];
278c4430-bcea-3ae9-a845-079687db907d [default@mytest] set hg18['chr1:000000004']['geneFeatures']['isExon'] = 'T';
Value inserted.
Elapsed time: 2.76 msec(s).
[default@mytest] set hg18['chr1:000000004']['conservation']['cons'] = '';
Value inserted.
Elapsed time: 1.74 msec(s).
[default@mytest] list hg18;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: chr1:000000004
=> (super_column=conservation,
(name=cons, value=13, timestamp=1529817745740000))
=> (super_column=geneFeatures,
(name=isExon, value=T, timestamp=1529817725916000)) 1 Row Returned.
Elapsed time: 97 msec(s).
05-08 08:14