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
是否可以使用Cassandra中的单个更新命令设置不同列映射中每个元素的TTL_Cassandra_Endianness_Ttl - Fatal编程技术网

是否可以使用Cassandra中的单个更新命令设置不同列映射中每个元素的TTL

是否可以使用Cassandra中的单个更新命令设置不同列映射中每个元素的TTL,cassandra,endianness,ttl,Cassandra,Endianness,Ttl,假设表名为:company\u employee select * from company_employee ; 这里我想将员工id\u name\u map元素“{1':'john'}”的TTL设置为30,将员工id\u department\u map元素“{1':'tech'}”设置为40是否有任何方法使用单个Cassandra命令更新这两个元素 我已经尝试过使用下面的单个命令为map中的单个元素设置ttl UPDATE company_employee USING TTL 30 SE

假设表名为:company\u employee

select * from company_employee ;
这里我想将员工id\u name\u map元素“{1':'john'}”的TTL设置为30,将员工id\u department\u map元素“{1':'tech'}”设置为40是否有任何方法使用单个Cassandra命令更新这两个元素

我已经尝试过使用下面的单个命令为map中的单个元素设置ttl

UPDATE company_employee USING TTL 30 SET employee_id_name_map['1']='john' WHERE company_id='123' and company_name = 'abc';
使用上面的卡桑德拉命令效果很好,但我想写一篇卡桑德拉的文章,任何好的建议对我都有很大帮助


提前感谢

不,您不能在一个CQL语句中设置不同的TTL。但是,您可以使用批处理将多个命令组合到一个Cassandra写入中(如果您使用相同的分区键)。像这样:

BEGIN BATCH
UPDATE company_employee USING TTL 30 SET employee_id_name_map['1']='john' WHERE company_id='123' and company_name = 'abc';
UPDATE company_employee USING TTL 40 SET employee_id_department_map['1']='tech' WHERE company_id='123' and company_name = 'abc';
APPLY BATCH;

不,不能在一个CQL语句中设置不同的TTL。但是,您可以使用批处理将多个命令组合到一个Cassandra写入中(如果您使用相同的分区键)。像这样:

BEGIN BATCH
UPDATE company_employee USING TTL 30 SET employee_id_name_map['1']='john' WHERE company_id='123' and company_name = 'abc';
UPDATE company_employee USING TTL 40 SET employee_id_department_map['1']='tech' WHERE company_id='123' and company_name = 'abc';
APPLY BATCH;
BEGIN BATCH
UPDATE company_employee USING TTL 30 SET employee_id_name_map['1']='john' WHERE company_id='123' and company_name = 'abc';
UPDATE company_employee USING TTL 40 SET employee_id_department_map['1']='tech' WHERE company_id='123' and company_name = 'abc';
APPLY BATCH;