Cassandra 主键不应更改任何内容。就低级(节俭)存储模型而言,复合主键实际上只是一个元组。CQL级别上不同列上的映射只是语法上的糖分。如果有集群键,基本上,即使有集群键,也同样适用。但是,我在回答中提出的一些声明不再有效,例如,如果存在集群密钥,则具有相同分区密钥的所

Cassandra 主键不应更改任何内容。就低级(节俭)存储模型而言,复合主键实际上只是一个元组。CQL级别上不同列上的映射只是语法上的糖分。如果有集群键,基本上,即使有集群键,也同样适用。但是,我在回答中提出的一些声明不再有效,例如,如果存在集群密钥,则具有相同分区密钥的所,cassandra,cql,cassandra-2.0,cql3,ttl,Cassandra,Cql,Cassandra 2.0,Cql3,Ttl,主键不应更改任何内容。就低级(节俭)存储模型而言,复合主键实际上只是一个元组。CQL级别上不同列上的映射只是语法上的糖分。如果有集群键,基本上,即使有集群键,也同样适用。但是,我在回答中提出的一些声明不再有效,例如,如果存在集群密钥,则具有相同分区密钥的所有CQL行实际上将映射到相同的节约行。如果您想了解一组特定的CQL行和列如何映射到底层数据存储,最好使用“cassandra_cli”查看数据。这将暴露无法通过CQL接口看到的内部详细信息。LWTs的问题是,当行不存在时,必须使用INSERT,


主键不应更改任何内容。就低级(节俭)存储模型而言,复合主键实际上只是一个元组。CQL级别上不同列上的映射只是语法上的糖分。如果有集群键,基本上,即使有集群键,也同样适用。但是,我在回答中提出的一些声明不再有效,例如,如果存在集群密钥,则具有相同分区密钥的所有CQL行实际上将映射到相同的节约行。如果您想了解一组特定的CQL行和列如何映射到底层数据存储,最好使用“cassandra_cli”查看数据。这将暴露无法通过CQL接口看到的内部详细信息。LWTs的问题是,当行不存在时,必须使用INSERT,当行已经存在时,必须进行更新。如果在没有IF子句的情况下使用INSERT或UPDATE,则它不是LWT。混合LWT和非LWT操作可能会导致许多问题,因此不建议使用(请参阅)。
insert into keyspace.table (pk, foo, bar) values ('first', 1, 'test') using ttl 60;
  pk  | foo | bar
------------------
first |  1  | test
update keyspace.table using ttl 10 set bar='change' where pk='first';
  pk  | foo | bar
--------------------
first |  1  | change
first |  1  | <<null>>  // after 10 seconds
   << deleted >>        // after the initial 60 seconds
update keyspace.table set bar='change' where pk='first';
  pk  | foo | bar
--------------------
first |  1  | change
first |  0  | change   // after the initial 60 seconds
update keyspace.table using ttl 70 set bar='change' where pk='first';

  pk  | foo | bar
--------------------
first |  1  | change
first |  0  | change   // after the initial 60 seconds
   << deleted >>       // after the 70 seconds
SELECT TTL(col1) FROM table1 where pk=1;
// read the ttl value fetched.
UPDATE table1 USING TTL <the_ttl_value> set col1='change' where pk=1;