cassandra - 是否可以在 Cassandra 中使用单个更新命令设置不同列映射中每个元素的 TTL
问题描述
假设表名:company_employee
select * from company_employee ;
company_id | company_name | employee_id_name_map | employee_id_department_map
------------+--------------+------------------------------+---------------------------
123 | abc | {'1': 'john'} ,{'2': 'jack'} | {'1': 'tech'} ,{'2': 'hr'}
在这里,我想将employee_id_name_map元素“{'1':'john'}”的TTL 设置为30,将employee_id_department_map元素“{'1':'tech'}”的TTL 设置为40是否有任何方法可以使用单个更新两个元素卡桑德拉命令?
我尝试使用如下的单个命令为地图中的单个元素设置 ttl
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';
使用上面的 cassandra 命令效果很好,但我想写一个 cassandra,任何好的建议都对我有很大帮助..
提前致谢
解决方案
不,您不能在一个 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;
推荐阅读
- twig - Pimcore 与树枝; 根据菜单深度渲染 html
- android - Android Studio 变慢了
- excel - Excel 条件格式仅在包含 x 的行上
- c++ - 我可以将结构数组别名为结构成员数组吗?
- c# - LINQ 3 次嵌套 foreach 并从中间循环中获取值
- java - Youtube 视频下载 (Android/Java)
- pdf-generation - Google 合作实验室笔记本 PDF 下载
- .net-core - 是否有用于 gRPC 的 .net 核心全局工具?
- java - Spark 无法分配请求的地址:服务驱动程序在 16 次重试后失败
- javascript - Javascript - 相等时间timesetouts - 即使javascript是单线程的,执行的随机顺序?