是否有可能在Cassandra中找到主键与所有主键字段的任意子集匹配的记录?
使用下面描述的表,可以找到主键具有特定type且name没有指定id或size?的记录.
CREATE TABLE playlists (
id uuid,
type text,
name text,
size int,
artist text,
PRIMARY KEY (id, type, name, size)
);
Run Code Online (Sandbox Code Playgroud)
谢谢!
Ser*_*rán 16
至少在Cassandra 1.2中它是可能的,但它默认是禁用的,
如果你试图这样做:
SELECT * from playlist where type = 'sometype' and name = 'somename';
Run Code Online (Sandbox Code Playgroud)
您将收到此错误:
Bad Request: Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING
Run Code Online (Sandbox Code Playgroud)
然后你可以启用它运行:
SELECT * from playlist where type = 'sometype' and name = 'somename' ALLOW FILTERING;
Run Code Online (Sandbox Code Playgroud)
在您的示例中,Cassandra将允许您从左到右使用主键的完整子集进行查询,例如:
SELECT * from playlist where id = 'someid'; (ALLOWED)
SELECT * from playlist where id = 'someid' and type = 'sometype'; (ALLOWED)
SELECT * from playlist where id = 'someid' and type = 'sometype' and name = 'somename'; (ALLOWED)
SELECT * from playlist where id = 'someid' and type = 'sometype' and name = 'somename' and size=somesize; (ALLOWED)
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
7444 次 |
| 最近记录: |