cassandra - 添加到 cassandra-cli 中的 columnfamily 的新列在 cqlsh (cql3) 中不可见

标签 cassandra cql3 cassandra-cli cqlsh

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

CREATE TABLE results (
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 * 查询也不会返回这个新列,并且描述都不会显示新列的 sogginess。

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

最佳答案

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

CQL 3 期望所有列都在元数据中定义,所以是的,您必须绑定(bind)到一个架构。

If not, how can I do it?

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

  1. Does cql3 require a schema for cassandra now
  2. Create a table in Cassandra 1.2 with CQL3 where column names will be created at runtime

关于cassandra - 添加到 cassandra-cli 中的 columnfamily 的新列在 cqlsh (cql3) 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17361245/

相关文章:

python - 处理 100 万行键的 pycassa multiget 的有效方法是什么

cassandra - 如何更改 cassandra/scylla 中的默认压缩策略?

cassandra - 如何在 Cassandra 中删除大量行(并避免潜在的墓碑问题)?

java - Cassandra 架构

cassandra - 是否有可能有一个不复制的 Cassandra 表?

cassandra - 如何通过 CQLSH 命令将字符串(文本)中的换行符(\n)插入到 Cassandra 中?

java - Hector slicequery 'where' 子句

spring-boot - Spring Boot 应用程序内存泄漏缓慢

cassandra - 是否可以在不停机的情况下更改生产中的 Cassandra 静态列系列?

cassandra - 检查cassandra中的一行TTL?