2016-11-17 69 views
1

我有一个包含复合主键的表。 名称,描述,ID如何通过Cassandra中的唯一ID处理搜索

PRIMARY KEY (id, name, description) 

每当搜索卡桑德拉我需要提供三个按键,但现在我有一个使用案例,我想删除,更新和得到的只是基于ID。

因此,我创建了一个物化视图,对这张表进行了重新排序,使ID先排序,这样我就可以根据ID进行搜索。

但是,如何删除或更新只有一个ID的记录?

+0

每个ID有多少个唯一的名称和说明? –

回答

2

,如果你使用的是分区键 3列,或者如果您使用的是复合主键目前尚不清楚。

如果您使用的是分区键 3列:

CREATE TABLE tbl (
    id uuid, 
    name text, 
    description text, 
    ... 
    PRIMARY KEY ((id, name, description)) 
); 

通知括号你需要的所有3个组成部分,以确定您的数据。因此,当您通过物化视图中的ID查询数据时,您还需要检索namedescription字段,然后每个元组发出一个删除<id, name, description>

相反,如果使用复合主键与ID是唯一分区键

CREATE TABLE tbl (
    id uuid, 
    name text, 
    description text, 
    ... 
    PRIMARY KEY (id, name, description) 
); 

通知括号,那么你可以简单地发出一个删除,因为你已经知道该分区并不需要其他任何东西。

检查this SO帖子中有关于主键类型的明确说明。

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

+0

是它是一个3列的复合主键,但如果我只用id创建表,当我创建复合表时,我只能再添加一列来搜索。 –