关于cassandra的小问题。基本上,我的数据有一个状态(已初始化、已执行、已结束...),并且我有不同的计划任务,这些任务将根据带有"IN“子句的状态查询此数据。因此,一个调度器将处理初始化的数据,一个调度器处理已执行的数据,一些调度器同时处理这两个数据,等等。
一旦检索到数据,就会对其进行处理,并相应地更改状态(INITIALIZED -> ENDED -> and )。
问题:为了能够使用in子句,必须在我的表的主键中计算状态。但是当我更新状态的时候。它会在我的表中创建一条新记录,因为UPSERT没有找到具有给定主键的任何数据...
我怎么解决这个问题呢?
发布于 2016-02-04 22:28:52
您可以在主键列上创建一个secondary index,而不是将status列包含在主键列中。但是,辅助索引列还不支持IN子句。但是,由于要查找的值数量非常有限,您可以在WHERE子句中使用相等条件,然后在客户端合并结果?
注意,使用二级索引是有代价的。查看"when not to use an index“。在您的案例中,这些要点可能适用:
经常更新或删除的列上的
https://stackoverflow.com/questions/35183571
复制相似问题