Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在cassandra中定义动态柱族_Database_Cassandra_Cql_Dynamic Columns - Fatal编程技术网

Database 如何在cassandra中定义动态柱族

Database 如何在cassandra中定义动态柱族,database,cassandra,cql,dynamic-columns,Database,Cassandra,Cql,Dynamic Columns,据说,无需特别努力即可获得动态柱族。但当我试图为未定义的列设置值时,总是会出现异常 我创建了一个柱族,如下所示: CREATE TABLE places ( latitude double, longitude double, name text, tags text, PRIMARY KEY (latitude, longitude, name) ) INSERT INTO places ("latitude","longitude","name","tags"

据说,无需特别努力即可获得动态柱族。但当我试图为未定义的列设置值时,总是会出现异常

我创建了一个柱族,如下所示:

CREATE TABLE places (
   latitude double,
   longitude double,
   name text,
   tags text,
   PRIMARY KEY (latitude, longitude, name)
)
INSERT INTO places ("latitude","longitude","name","tags") VALUES (49.797888,9.934771,'Test','foo,bar')
顺便说一句:我必须定义标签列。谁能解释一下为什么?可能是因为所有其他列都是索引的一部分

现在,当插入如下数据时:

CREATE TABLE places (
   latitude double,
   longitude double,
   name text,
   tags text,
   PRIMARY KEY (latitude, longitude, name)
)
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
需要哪些更改才能动态添加列


我将Cassandra 1.1.9与CQL3一起直接在服务器上使用cqlsh。

CQL3要求存在列元数据。CQL3实际上是对底层存储行的抽象,因此它不是一对一的。如果您想使用动态列名(有很多优秀的使用案例),请使用传统的Thrift界面(通过您选择的客户端库)。这将使您能够完全控制存储的内容。

CQL3支持动态列族,但您必须首先更改表架构

ALTER TABLE places ADD website varchar;

查看幻灯片和幻灯片

谢谢!现在我明白了关于宽行的变化!但是我不喜欢它们,但是你帮了我很多。嗨,我很困惑,有没有办法在运行中创建一个专栏?节俭是非常不赞成CQL的,对吗?那么,当前的最佳做法是在每次插入之前运行大量ALTER TABLE语句吗?最简单的方法是通过
map
数据类型,它实际上会在后台创建动态列名。下面是一篇关于在FQL中支持动态列的精彩文章: