2

我在cql3中定义了一个表。描述它返回以下内容:

CREATE TABLE 结果(
id uuid PRIMARY KEY、
casename text、
result text、
run int、
user text
) WITH ...

我尝试使用这样一个事实,即这不应该限制列族并添加一个新的列值对:

insert into results (id, sogginess) values(3d6f63a4-c1e0-4dd8-b043-8e0754122f23, 'high') ;

但这不起作用。如果我使用 cassandra-cli,我可以使用标准集语法添加 sogginess 的值,并且该行正常保留。即使切换回 cql3,select * 查询也不会返回这个新列,也没有 describe 显示新列 sogginess。

这意味着您不能将任意数据添加到 cql3 中的行并且您受定义的架构的约束?如果没有,我该怎么做?

4

1 回答 1

4

TL;博士;
不,但您可以使用集合:phonenumbers set<text>

CQL 3 期望在元数据中定义所有列,所以是的,您已绑定到模式。

如果没有,我该怎么做?

好吧,你不能。您可以做的是使用集合并构建您的数据模型。通过 thrift 添加任意列被认为是不好的做法。我的建议是阅读 datastax 关于 CQL3 中的宽行支持的文章。这些问题也是相关的(如果不是重复的......)所以看看它们:

  1. cql3 现在是否需要 cassandra 的架构
  2. 在 Cassandra 1.2 中使用 CQL3 创建一个表,其中列名将在运行时创建
于 2013-06-28T09:33:51.290 回答