cassandra-按状态选择和按上次更新的顺序

vltsax25  于 2021-06-13  发布在  Cassandra
关注(0)|答案(0)|浏览(249)

我是jobrunr(源代码请参见github)的创建者,这是一个面向java的后台作业处理框架,我被要求添加对cassandra的支持。
作业的状态在其生命周期中变化很大(排队、处理、成功、失败等),并且作业的id是uuid。
我的要求是:
查询上次更新作业时作业和订单的状态(asc和desc)
按id查询作业
按id删除作业
我不知道如何在cassandra中解决这个问题(我可能在考虑使用关系型)而不允许过滤。我尝试过的事情:
为创建一个具有分区键的表 id 还有一个索引 state =>除了在 updatedAt 为创建一个具有分区键的表 id 还有一个索引 state ORDERBY子句=>不可能。错误消息 ORDER BY with 2ndary indexes is not supported. 取消规范化并添加表 jobs_by_state 打开分区键 creationDate (yyyymmdd-因为数据是基于时间的,具有更高的基数), state 和聚类键 updatedAt =>这是可行的,但如何删除作业?错误消息 Non PRIMARY KEY columns found in where clause: id 物化视图?我犹豫不决,因为它仍然有bug(如果我创建了一个,它会无声地更改集群密钥而不会失败)
我能想到的唯一办法就是为每个州列出包含 id 工作顺序正确。在插入和更新时,我执行批处理以保证事务性。但我不认为这是一个好主意,因为有些州可能有数百万的就业机会在该州。
肯定有更好的办法,不是吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题