我有必要 检索所有具有特定状态的请购单。
.
Requisiton ID || Status
我考虑过创建一个有两列的表。但是有一个问题: 当我想更新状态时,我搜索的是... 要件 因此,这将是我的分区密钥)。但当我查询时,我搜索的是 状况
(获取所有具有一定状态的请求),因此将最后这个作为我的分区密钥。在这种情况下,如何选择分区密钥?将两个 状况 和 申购号
假设这个角色似乎不是很有效率(因为每条记录都有可能在不同的节点上结束)。也许推荐使用不同的数据库模型?
先谢谢你Partition Key
我需要检索所有具有特定状态的申购单。我考虑过创建一个有两列的表。Requisiton ID在哪个节点上存在数据:
Clustering key
是用来根据一列对分区里面的数据进行排序。
假设状态列的卡数不会很高,最好使用一些其他列作为分区键。例如,如果你有一个10个节点的集群,将状态作为分区键,状态列只能有2个可能的值,那么数据将不会分布在所有节点上。一个或两个节点将过载,其他节点将没有数据。
你可以像这样创建你的表,除非你有更好的列作为分区键。
CREATE TABLE requisition_status (id bigint, status text, PRIMARY KEY(id,status));
这样定义你的主键会使你的 id
作为分区密钥和 status
作为聚类键,你可以在你的查询where子句中同时使用它们。