我是cql新的学习者。我有(餐厅)的table。通过实现'desc restaurants',显示restaurants表中的信息 如何在不使用“允许筛选”的情况下运行以下查询, select name from restaurants where borough = 'brooklyn'; 为了能够在不使用“允许筛选”的情况下运行查询,有哪些必要的步骤? 非常感谢。
对于cassandra(cql),您需要采用基于查询的建模方法。这意味着您需要一个专门设计的表来为查询提供服务 borough . 一个好问题是,为什么(在当前的表设计中)是 id 你唯一的主键?您必须支持以下查询: id ? 如果没有,那你就不需要那张table了。然而,作为 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);
现在该查询将起作用:
select name from restaurants_by_borough
where borough = 'brooklyn';
它将返回每个行政区的数据,按 name . 另外,如果任何两个餐厅有相同的 name (布鲁克林可能不止一家麦当劳) id 添加到键的末尾以确保唯一性。
1条答案
按热度按时间cbeh67ev1#
对于cassandra(cql),您需要采用基于查询的建模方法。这意味着您需要一个专门设计的表来为查询提供服务
borough
.一个好问题是,为什么(在当前的表设计中)是
id
你唯一的主键?您必须支持以下查询:id
? 如果没有,那你就不需要那张table了。然而,作为borough
不是唯一的,将其他列聚集到主键定义中是有意义的。我会这样说:
现在该查询将起作用:
它将返回每个行政区的数据,按
name
. 另外,如果任何两个餐厅有相同的name
(布鲁克林可能不止一家麦当劳)id
添加到键的末尾以确保唯一性。