gpt4 book ai didi

cassandra - 是否需要使用所有定义为主键的列来查询 Cassandra 数据库?

转载 作者:行者123 更新时间:2023-12-02 22:56:42 25 4
gpt4 key购买 nike

我正在使用 Cassandra 数据库,需要定义主键,它是分区键和集群键的组合。根据业务需求,需要基于客户编号createdAt(Unix时间戳值)两个字段的组合来查询cassandra数据库。这些列不能用作主键,因为它们无法唯一标识数据库中的行。那么,从数据库中添加uuid列作为集群键以使主键唯一,这样主键将成为 - customerNumber(分区键)、createdAt(集群键)、uuid(集群键)。但是数据库永远不会根据整个主键进行查询。它将始终根据主键的部分进行查询,即 Customer NumbercreatedAtuuid 永远不会用于查询数据库。

最佳答案

因此,如果我理解正确,您的主键定义如下所示:

PRIMARY KEY (customerNumber,createdAt,uuid)

It will always be queried based on the part of the Primary key

是的,根据您的情况,通过 PRIMARY KEY 定义的部分进行查询是可以的。 Cassandra 尝试将查询限制在单个节点,它通过确保将整个分区写入单个节点(然后复制)来实现这一点。因此,您实际上只需要在查询中提供分区键 (customerNumber),它们就应该可以工作。

但是,提供额外的 PRIMARY KEY 组件是有帮助的。在高吞吐量场景中,结果集有效负载越小越好。

tl;博士;

通过customerNumbercreatedAt查询就可以了。

关于cassandra - 是否需要使用所有定义为主键的列来查询 Cassandra 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60404750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com