如何在没有“允许过滤”的情况下在CQL中进行条件查询?

Hon*_*ong 1 cql cassandra

我是CQL的新学习者。我有(餐厅)表。通过实现的“ desc restaurant”,它在餐厅表信息中显示 信息

如何在不使用“允许过滤”的情况下运行以下查询, select name from restaurants where borough = 'brooklyn';

为了能够在没有“允许过滤”的情况下运行查询,必须执行哪些必要步骤?

非常感谢。

Aar*_*ron 5

使用Cassandra(CQL),您需要采用基于查询的建模方法。这意味着您将需要一个专门设计的表格来通过提供服务borough

首先要问的一个好问题是,为什么(在当前的表格设计中)id唯一的主键是?您是否需要查询依据id?如果没有,那么您就不需要该表。但是,由于borough不是唯一的,因此有必要将其他列聚类到您的主键定义中。

我会选择这样的东西:

CREATE TABLE stackoverflow.restaurants_by_borough (
    borough text,
    name text,
    id int,
    buildingnum text,
    cuisinetype text,
    phone text,
    street text,
    zipcode int,
    PRIMARY KEY (borough, name, id)
) WITH CLUSTERING ORDER BY (name ASC, id ASC);
Run Code Online (Sandbox Code Playgroud)

现在此查询将起作用:

select name from restaurants_by_borough
where borough = 'brooklyn';
Run Code Online (Sandbox Code Playgroud)

它将返回每个自治市镇的数据,按排序name。此外,如果在任何两家餐厅都相同name(在布鲁克林的麦当劳可能不止一家)id,则将其添加到密钥的末尾以确保唯一性。