如何避免Cassandra允许过滤?

时间:2019-03-19 08:57:51

标签: cassandra

我有以下数据模型:-

 campaigns {
  id int PRIMARY KEY,
  scheduletime text,
  SchduleStartdate text,
  SchduleEndDate text,
  enable boolean,
  actionFlag boolean,
.... etc   
 }

在这里,我需要获取基于开始日期和结束日期的数据,而没有ALLOW FILTERING。 我有更多建议重新设计架构以完全满足需求,但是我无法基于id过滤数据,因为我需要日期中的数据。

有人给我一个很好的建议,可以完全满足这种情况以执行以下查询:-

select * from campaings WHERE startdate='XXX' AND endDate='XXX' ; //没有允许过滤的内容

1 个答案:

答案 0 :(得分:1)

public class Controller : ControllerBase
{
    public dynamic ViewBag { get; }
    public virtual ViewResult View(object model) { }
    // more
}

您可以对表格进行以下查询,

CREATE TABLE campaigns (
SchduleStartdate text, 
SchduleEndDate text, 
id int, 
scheduletime text,
enable boolean, 
PRIMARY KEY ((SchduleStartdate, SchduleEndDate),id));

在这里,将SchduleStartdate和SchduleEndDate用作分区键,并将ID用作聚类键,以确保条目唯一。

通过这种方式,如果需要,您可以根据开始,结束和ID进行过滤。

这样做的一个缺点是,您只需要按id进行过滤,而首先要限制分区键就不可能。