我使用的是cassandra数据库,需要定义主键,它是分区键和集群键的组合。cassandra数据库需要根据业务需求,根据客户号和createdat(unix时间戳值)两个字段的组合进行查询。这些列不能用作主键,因为它们不能唯一标识数据库中的行。那么,从数据库中添加uuid列作为集群键是否正确,以使主键唯一,从而使主键成为-customernumber(分区键)、createdat(clusteringkey)、uuid(集群键)的组合。但是,永远不会基于整个主键查询数据库。它将始终基于主键的部分进行查询,即customernumber和createdat。uuid永远不会用于查询数据库。
1条答案
按热度按时间7ivaypg91#
如果我理解正确,您的主键定义如下:
它将始终基于主键的部分进行查询
是的,在您的情况下,按主键定义的一部分进行查询是可以的。cassandra试图将查询限制到单个节点,它通过确保将整个分区写入单个节点(然后复制)来实现这一点。因此,您实际上只需要在查询中提供分区键(
customerNumber
),他们应该工作。但是,提供一个额外的主键组件是有帮助的。在高吞吐量场景中,结果集有效负载越小越好。
热释光;博士;
查询依据
customerNumber
以及createdAt
会没事的。