使用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,则将其添加到密钥的末尾以确保唯一性。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |