是否可以使用Cassandra中的单个更新命令设置不同列映射中每个元素的TTL
假设表名为:company\u employee是否可以使用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
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;