| Status But there is a problem: when I want to update the ...

问题描述 投票:0回答:1
is used to identify which node data has to be written

我有必要 检索所有具有特定状态的请购单。

.

Requisiton ID || Status

我考虑过创建一个有两列的表。但是有一个问题: 当我想更新状态时,我搜索的是... 要件 因此,这将是我的分区密钥)。但当我查询时,我搜索的是 状况

(获取所有具有一定状态的请求),因此将最后这个作为我的分区密钥。在这种情况下,如何选择分区密钥?将两个 状况申购号

假设这个角色似乎不是很有效率(因为每条记录都有可能在不同的节点上结束)。也许推荐使用不同的数据库模型?

先谢谢你
database-design cassandra data-modeling
1个回答
0
投票

Partition Key我需要检索所有具有特定状态的申购单。我考虑过创建一个有两列的表。Requisiton ID在哪个节点上存在数据:

Clustering key 是用来根据一列对分区里面的数据进行排序。

假设状态列的卡数不会很高,最好使用一些其他列作为分区键。例如,如果你有一个10个节点的集群,将状态作为分区键,状态列只能有2个可能的值,那么数据将不会分布在所有节点上。一个或两个节点将过载,其他节点将没有数据。

你可以像这样创建你的表,除非你有更好的列作为分区键。

CREATE TABLE requisition_status (id bigint, status text, PRIMARY KEY(id,status));

这样定义你的主键会使你的 id 作为分区密钥和 status 作为聚类键,你可以在你的查询where子句中同时使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.