问题描述
我有一个具有多列的表用户,每个用户都有一个唯一的用户ID。 因为它是唯一的,所以除非我想在查询中使用该列,否则不必指定集群键。这是不好的,因为每个分区都由一行组成吗?如果由于某种原因不好,在这种情况下最佳做法是什么? 谢谢您的帮助!
编辑:如果我有一个查询需要返回所有用户名,那么如何才能获得良好的性能呢?从该表执行此操作对我来说似乎不是很有效,我是否应该在另一个表中直接复制集合中的所有用户名?然后它们全部集中在一个地方,读取不必跳过多个节点。
解决方法
我只是answered the similar question。简而言之-它实际上取决于访问模式和表设置。您可能需要调整表参数以获得最佳性能,但设置可能取决于数据量和其他要求。
,在Cassandra中定义主键时始终有两个(主要)注意事项:
- 数据分发
- 查询模式匹配
从数据分发的角度来看,没有比使用唯一键作为分区键更好的了。它们越多,它们应散列得越均匀,从而均匀分布。
但是,分配得很好但不符合所需查询模式的键却毫无用处。
tl; dr;
如果唯一键是查询表所依据的唯一键,那么它将为分区键做出好选择。