如何在Cassandra中按唯一ID处理搜索

时间:2016-11-17 16:08:17

标签: cassandra data-modeling

我有一张带有复合主键的表。 名称,说明,ID

PRIMARY KEY (id, name, description)

每当搜索Cassandra时,我需要提供三个密钥,但现在我有一个用例,我想删除,更新,并根据ID获取。

所以我创建了一个针对这个表的物化视图,并重新排序了键,以便首先获得ID,这样我就可以根据ID进行搜索。

但是如何只使用ID删除或更新记录?

1 个答案:

答案 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帖子,了解有关主键类型的明确说明。

您应该注意的另一件事是物化视图将为您填充一个表格,关于数据建模的相同规则/想法也应适用于物化视图。