我不断遇到这些术语:high cardinality
and low cardinality
in Cassandra
.
我不明白它们到底是什么意思。它们对查询有什么影响以及首选是什么。
请举例说明,因为这样很容易理解。
X 的基数只不过是组成 X 的元素的数量。
在 Cassandra 中,分区键基数对于分区数据非常重要。
由于分区键负责数据在集群中的分布,因此选择低基数键可能会导致数据不分布的情况。
想象一下你有一个集群20存储注释的节点——复制因子(RF)是2。每个评论都有自己的投票,从 1 到 5。现在,由于您希望通过投票轻松检索评论,因此您可能会选择投票作为分区键。
CREATE TABLE comments(vote int, content text, id uuid, PRIMARY KEY(vote, id));
在这种情况下,负责数据分发的唯一键是 vote,它的基数非常低,因为它只能包含 5 个值 (1,2,3,4,5)。这意味着,在best情况 5 个不同的节点将是 5 个不同分区的所有者(即“所有投票为 1 的评论”...“所有投票为 5 的评论”),并且再次处于最佳状态情况,当 RF 为 2 时,10 个不同的节点将保存您的数据。正如您所看到的,您有一个 20 个节点的集群,在最佳情况下使用率不会超过 50%。
数据分布非常重要,这就是为什么分区键基数很重要
哈特哈,
卡洛
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)