【发布时间】:2018-03-22 15:16:08
【问题描述】:
是否有可能在 cassandra 中有效地实现这种查询?
假设我有一张桌子
CREATE TABLE something(
a INT,
b INT,
c INT,
d INT,
e INT
PRIMARY KEY(a,b,c,d,e)
);
我想通过以下方式查询该表:SELECT * FROM something WHERE a=? AND b=? AND e=?
或SELECT * FROM something WHERE a=? AND c=? AND d=?
或SELECT * FROM something WHERE a=? AND b=? AND d=?
等等。
以上所有查询都不起作用,因为 cassandra 要求查询按顺序指定聚类列。
我知道通常这种情况需要创建一些物化视图或将数据非规范化到多个表中。但是,在这种情况下,我需要制作 4*3*2*1 = 24 表,这基本上不是一个可行的解决方案。
二级索引要求必须打开ALLOW FILTERING 选项才能使多索引查询工作,这似乎是个坏主意。此外,something 表中可能存在一些高基数列。
我想知道是否有任何解决方法可以让如此复杂的查询工作?
【问题讨论】: