首页 文章

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

提问于
浏览
1

我有一个带有复合主键的表 . name,description, ID

PRIMARY KEY (id, name, description)

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

所以我创建了一个针对该表的物化视图,并重新排序了密钥以便首先获得ID,因此我可以根据ID进行搜索 .

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

1 回答

  • 2

    目前尚不清楚你是否正在使用带有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查询数据时,您还需要检索 namedescription 字段,然后每个元组发出一次删除 <id, name, description> .

    相反,如果你使用 composite 主键 ID 是唯一 PARTITION KEY

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

    注意 single 括号,然后您可以简单地发出一个删除,因为您已经知道该分区,并且不需要任何其他内容 .

    检查this SO帖子以获得有关主键类型的清晰说明 .

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

相关问题