【发布时间】:2016-01-18 22:57:11
【问题描述】:
假设我在 Cassandra 中有一个使用 cassandra-cli 创建的列族,如下所示:
create column family users with key_validation_class = UTF8Type and comparator = UTF8Type;
就thrift to CQL3 migration guide from Datastax 而言,这是一个动态列族。
当使用DESCRIBE TABLE users 从 CQL3 客户端查看时,它看起来像这样:
CREATE TABLE users (
key text,
column1 text,
value blob,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC);
这是预期的行为。我想要的是添加列元数据,以便将列族视为静态。
所以我尝试使用cassandra-cli:
update column family users
with column_metadata = [{column_name: email, validation_class: UTF8Type}];
但是 CQL3 中的最终结果不是我想要的:
CREATE TABLE users (
key text,
column1 text,
value blob,
email text,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC);
我所期望的结果与我从一开始就使用元数据创建列族时的结果相同:
create column family users2
with key_validation_class = UTF8Type
and comparator = UTF8Type
and column_metadata = [{column_name: email, validation_class: UTF8Type}];
在这种情况下,CQL3 视图就是我想要的:
CREATE TABLE users2 (
key text PRIMARY KEY,
email text
) WITH COMPACT STORAGE;
有什么方法可以将列元数据添加到没有任何创建的列族中 - 以便从 CQL3 中查看它的方式与创建列族时提供元数据的方式相同?当然,无需重新创建列族。
【问题讨论】:
标签: cassandra cql cassandra-cli