我有一个带有复合主键的表 . name,description, ID
PRIMARY KEY (id, name, description)
每当搜索Cassandra时我都需要提供三个密钥,但现在我有一个用例,我想删除,更新,并根据ID获取 .
所以我创建了一个针对该表的物化视图,并重新排序了密钥以便首先获得ID,因此我可以根据ID进行搜索 .
但是如何仅使用ID删除或更新记录?
目前尚不清楚你是否正在使用带有3列的 partition key ,或者你是否正在使用 composite primary key .
如果您使用的是包含3列的 partition key :
CREATE TABLE tbl ( id uuid, name text, description text, ... PRIMARY KEY ((id, name, description)) );
注意 double 括号,您需要所有3个组件来识别您的数据 . 因此,当您从物化视图中按ID查询数据时,您还需要检索 name 和 description 字段,然后每个元组发出一次删除 <id, name, description> .
name
description
<id, name, description>
相反,如果你使用 composite 主键 ID 是唯一 PARTITION KEY :
ID
CREATE TABLE tbl ( id uuid, name text, description text, ... PRIMARY KEY (id, name, description) );
注意 single 括号,然后您可以简单地发出一个删除,因为您已经知道该分区,并且不需要任何其他内容 .
检查this SO帖子以获得有关主键类型的清晰说明 .
您应该注意的另一件事是物化视图将为您填充一个表格,关于数据建模的相同规则/想法也应适用于物化视图 .
1 回答
目前尚不清楚你是否正在使用带有3列的 partition key ,或者你是否正在使用 composite primary key .
如果您使用的是包含3列的 partition key :
注意 double 括号,您需要所有3个组件来识别您的数据 . 因此,当您从物化视图中按ID查询数据时,您还需要检索
name
和description
字段,然后每个元组发出一次删除<id, name, description>
.相反,如果你使用 composite 主键
ID
是唯一 PARTITION KEY :注意 single 括号,然后您可以简单地发出一个删除,因为您已经知道该分区,并且不需要任何其他内容 .
检查this SO帖子以获得有关主键类型的清晰说明 .
您应该注意的另一件事是物化视图将为您填充一个表格,关于数据建模的相同规则/想法也应适用于物化视图 .