卡桑德拉的高低基数

时间:2014-08-03 02:49:45

标签: cassandra-2.0 cardinality

我会在high cardinality中不断遇到这些条款:low cardinalityCassandra

我不明白他们究竟是什么意思。它们对查询有什么影响,什么是首选。 请用例子说明,因为这很容易理解。

1 个答案:

答案 0 :(得分:15)

X的基数只不过是构成X的元素数量。 在Cassandra中,分区键基数对于分区数据非常重要。

由于分区键负责跨群集分发数据,因此选择低基数密钥可能会导致数据未分发的情况。

想象一下,您有一个 20 节点的群集存储注释 - RF 2 。每个评论都有自己的投票从1到5.现在,由于您希望通过投票轻松检索评论,您可能会选择投票作为分区键。

CREATE TABLE comments(vote int, content text, id uuid, PRIMARY KEY(vote, id));

在这种情况下,负责数据分发的唯一关键是投票,它的基数非常低,因为它只能包含5个值(1,2,3,4,5)。这意味着,在最佳情况下,5个不同的节点将成为5个不同分区的所有者(这是"所有评论都带有投票1和#34; ..."所有投票5和#34;)的评论,以及最佳情况的评论,RF为2,10个不同的节点将保存您的数据。如您所见,您有一个20节点集群,在最佳情况下使用率不超过50%。

数据分发非常重要,这就是为什么分区密钥基数非常重要

HTH, 卡罗