我有一张带有复合主键的表。 名称,说明,ID
PRIMARY KEY (id, name, description)
每当搜索Cassandra时,我需要提供三个密钥,但现在我有一个用例,我想删除,更新,并根据ID获取。
所以我创建了一个针对这个表的物化视图,并重新排序了键,以便首先获得ID,这样我就可以根据ID进行搜索。
但是如何只使用ID删除或更新记录?
答案 0 :(得分:2)
目前尚不清楚您是否使用包含3列的分区键,或者您使用的是复合主键。
如果您使用包含3列的分区键:
while(Auction.auctions.length){
// From first to last...
var auction = Auction.auctions.shift();
// From last to first...
var auction = Auction.auctions.pop();
// Do stuff with auction
}
注意 double 括号,您需要所有3个组件来识别您的数据。因此,当您从实体化视图中按ID查询数据时,您还需要检索CREATE TABLE tbl (
id uuid,
name text,
description text,
...
PRIMARY KEY ((id, name, description))
);
和name
字段,然后为每个元组description
发出一次删除。
相反,如果您使用复合主键且<id, name, description>
是唯一的 PARTITION KEY :
ID
注意单个括号,然后您只需发出一次删除,因为您已经知道该分区,并且不需要其他任何内容。
检查this SO帖子,了解有关主键类型的明确说明。
您应该注意的另一件事是物化视图将为您填充一个表格,关于数据建模的相同规则/想法也应适用于物化视图。