如何定义在卡桑德拉动态列族(How to define dynamic column familie

2019-07-18 12:43发布

这里有人说,没有任何特殊的努力是需要获得一个动态的列族。 但是,我总是得到一个例外,当我尝试了一个未定义的列设置的值。

我创建了一个列族是这样的:

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

这需要改变,所以我可以动态地添加列?

我使用卡桑德拉1.1.9与CQL3直接与cqlsh的服务器上。

Answer 1:

CQL3支持动态列的家庭,但你必须先改变表模式

ALTER TABLE places ADD website varchar;

退房的1.2文件 ,并在深度定制列表幻灯片



Answer 2:

CQL3要求列元数据存在。 CQL3实际上是在底层的存储行的抽象,所以它不是一个对一个。 如果你想使用动态的列名(也有很多优秀的用例),请使用传统的节俭接口(通过您所选择的客户端库)。 这会给你什么获取存储的完全控制。



文章来源: How to define dynamic column families in cassandra