Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
cql2和cql3之间的Cassandra CQL不相容性_Cassandra_Cql - Fatal编程技术网

cql2和cql3之间的Cassandra CQL不相容性

cql2和cql3之间的Cassandra CQL不相容性,cassandra,cql,Cassandra,Cql,在Cassandra CQL3中,动态添加新列似乎不起作用;假设我有这张桌子: cqlsh:Keyspace2>从用户中选择* 用户名|出生|年份|性别|密码|会话|令牌|状态 -----------+------------+--------+------------+---------------+------- jsmith | 1968 |空|ch@ngem3a|空|空 jsmith2 | 1963 |空|ch@ngem3a2|空|空 cqlsh:Keyspace2>插入用户(用户名,x

在Cassandra CQL3中,动态添加新列似乎不起作用;假设我有这张桌子:

cqlsh:Keyspace2>从用户中选择*

用户名|出生|年份|性别|密码|会话|令牌|状态

-----------+------------+--------+------------+---------------+-------

jsmith | 1968 |空|ch@ngem3a|空|空

jsmith2 | 1963 |空|ch@ngem3a2|空|空

cqlsh:Keyspace2>插入用户(用户名,x)值('jsmith',100)

>错误请求:未知标识符x

也许你想用cql2?在启动cqlsh时尝试使用-2选项

但警告是正确的,当我转到CQL2时,同样的事情也会发生:

> Blockquote

cqlsh:Keyspace2> exit
[root@bdvm1 ~]# cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 2.2.0 | Cassandra 1.1.9-dse-2.2.2-SNAPSHOT | CQL spec 2.0.0 | Thrift protocol 19.33.0]
Use HELP for help.
cqlsh> use Keyspace1;
cqlsh:Keyspace1> select * from users;
 KEY   | birth_year | gender
-------+------------+--------
  TEST |       1968 |      m
  TEST1 |       1968 |      f

cqlsh:Keyspace1> insert into users (KEY, x) values ('jsmith',100);
cqlsh:Keyspace1> select * from users;
 KEY,TEST | birth_year,1968 | gender,m
 KEY,TEST1 | birth_year,1968 | gender,f
 KEY,jsmith | x,100
有人知道为什么吗?我本以为CQL3是向后兼容的

谢谢,
Matt

直接回答为否,CQL3向后不兼容(请参阅)。但这并不意味着他们违背了向后兼容的承诺。CQL3背后的基础API仍然是Thrift API,它具有自0.7以来相同的功能,只是实现风格发生了变化

直接回答为否,CQL3向后不兼容(请参阅)。但这并不意味着他们违背了向后兼容的承诺。CQL3背后的基础API仍然是Thrift API,它具有自0.7以来相同的功能,只是实现风格发生了变化

你需要阅读和阅读。第一部分特别解释了为什么CQL2不能对许多常见的Cassandra设计模式进行建模,以及我们如何在CQL3中解决这些问题

简短回答:CQL2所谓的“行中的动态列”在CQL3中表示为“分区中的多行”。为了减少混淆,我们现在将name:value的原始存储引擎原子称为一个单元格,而不是一个列,并将一组具有公共键的单元格称为分区。

您需要读取和读取。第一部分特别解释了为什么CQL2不能对许多常见的Cassandra设计模式进行建模,以及我们如何在CQL3中解决这些问题

简短回答:CQL2所谓的“行中的动态列”在CQL3中表示为“分区中的多行”。为了减少混淆,我们现在将原始存储引擎原子名称:value称为一个单元,而不是一列,将一组具有公共键的单元称为分区