Here据说,不需要特别的努力来获得动态列族。但是当我尝试为未定义的列设置值时,我总是会遇到异常。
我创建了一个这样的列族:
CREATE TABLE places (
latitude double,
longitude double,
name text,
tags text,
PRIMARY KEY (latitude, longitude, name)
)
BTW:我必须定义标签列。有人可以解释一下为什么吗?也许是因为所有其他列都是索引的一部分?
现在插入这样的数据时:
INSERT INTO places ("latitude","longitude","name","tags") VALUES (49.797888,9.934771,'Test','foo,bar')
它工作得很好!但是当我尝试:
INSERT INTO places ("latitude","longitude","name","tags","website") VALUES (49.797888,9.934771,'Test','foo,bar','test.de')
我收到以下错误:
Bad Request: Unknown identifier website
text could not be lexed at line 1, char 21
需要进行哪些更改才能动态添加列?
我在服务器上直接使用带有CQL3的Cassandra 1.1.9和cqlsh。
答案 0 :(得分:12)
答案 1 :(得分:7)
CQL3要求存在列元数据。 CQL3实际上是对底层存储行的抽象,因此它不是一对一的。如果您想使用动态列名(并且有很多优秀的用例),请使用传统的Thrift接口(通过您选择的客户端库)。这将使您完全控制存储的内容。