Cassandra:如何在超级列族中创建列?

时间:2011-12-01 22:47:36

标签: cassandra

我在模式文件中定义我的数据库模型,以便稍后从头开始轻松创建键空间和列族。我查看了Cassandra发行版附带的schema-sample.txt,它展示了如何使用column_metadata创建标准列系列,如下所示:

create column family User
with comparator = UTF8Type
and default_validation_class = UTF8Type
and column_metadata = [
         {column_name : name, validation_class : UTF8Type}
         {column_name : username, validation_class : UTF8Type}
         {column_name : City, validation_class : UTF8Type}
];

但是如何使用类似的语法来创建超级列族?我想定义我将放在超级列族中的超级列的列名。

1 个答案:

答案 0 :(得分:7)

要创建超级列族,您只需添加column_type属性:

create column family User
with column_type = 'Super' 
and comparator = UTF8Type
and default_validation_class = UTF8Type;

您无法在元数据中定义超级列的名称。元数据用于验证列值或创建索引。由于您无法验证超级列的值(值是更多列)而您无法在超级列上创建索引,因此没有理由为它们设置元数据。

您可以使用超级列创建有关子列的元数据,但它将应用于该行中的所有超级列。例如:

create column family User
with column_type = 'Super'
and comparator = UTF8Type
and default_validation_class = UTF8Type
and column_metadata = [
         {column_name : name, validation_class : UTF8Type}
         {column_name : age, validation_class : LongType}
];

在这个超级列族中,任何名为“name”的子列都必须是UTF8,任何名为age的子列都必须是long。