eag*_*arn 6 cardinality cassandra-2.0
我一直在谈论这些术语:high cardinality并且low cardinality在Cassandra.
我不明白他们究竟是什么意思.它们对查询有什么影响,什么是首选.请举例说明,因为这很容易理解.
Car*_*ini 15
X的基数只不过是组成X的元素数.在Cassandra中,分区键基数对于分区数据非常重要.
由于分区键负责跨群集分发数据,因此选择低基数密钥可能会导致数据未分发的情况.
想象一下,你有一个20个节点的集群存储注释 - RF是2.每个评论都有自己的投票从1到5.现在,由于您希望通过投票轻松检索评论,您可能会选择投票作为分区键.
CREATE TABLE comments(vote int, content text, id uuid, PRIMARY KEY(vote, id));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,负责数据分发的唯一关键是投票,它具有非常低的基数,因为它只能包含5个值(1,2,3,4,5).这意味着,在最好的情况下,5个不同的节点将是5个不同分区的所有者(这是"所有评论与投票1"......"所有评论与投票5"),并且再次在最好的情况下,与2个,10个不同节点的RF将保存您的数据.如您所见,您有一个20节点集群,在最佳情况下使用率不超过50%.
数据分布是非常重要的,这就是为什么分区键的基数是相当重要的
HTH,卡罗