是什么导致卡桑德拉宽行?

eag*_*arn 1 cassandra-2.0

我从这篇文章中发现了以下内容:

create table posts(username varchar, time timeuuid, post_text varchar, primary key(username, time))
Run Code Online (Sandbox Code Playgroud)

CF 行的数量与主键中第一个元素的变体数量相同。如果该元素的基数非常低,这可能会成为一个问题,因为最终可能会得到非常宽的 CF 行。

我的观点是:

我上面加粗的内容不应该是主键中的第二个元素。也就是说,次要元素或聚类元素导致宽行正确吗?

Car*_*ini 5

这是一个定义和词典的问题。宽行和行不是同一件事——给出一个定义,我会说在具有 PK(分区、集群)的表中,宽行的数量与分区键的数量一样多。数由每个分区的所有聚类键的总和给出。

因此,在您引用的句子中,作者写了“行”,但他的意思是“宽行”。

CF宽行的数量与主键中第一个元素的变体数量相同。如果该元素的基数非常低,这可能会成为一个问题,因为最终可能会得到非常宽的CF 行。

可能在撰写本文时,宽行一词还没有被如此使用。所以给定这样一个表

CREATE TABLE wide_rows (
  partitionkey text,
  clusteringkey text,
  data text,
  PRIMARY KEY ((partitionkey), clusteringkey)
)
Run Code Online (Sandbox Code Playgroud)

只有分区键宽行,但行数取决于分区和集群

insert into wide_rows(partitionkey, clusteringkey, data) VALUES ( 'eagertoLearn', 'stackoverflow', 'cassandra question');
insert into wide_rows(partitionkey, clusteringkey, data) VALUES ( 'eagertoLearn', 'google groups', 'cql question');
insert into wide_rows(partitionkey, clusteringkey, data) VALUES ( 'eagertoLearn', 'askubuntu', 'linux shell question');
select * from wide_rows where partitionkey = 'eagertoLearn';

 partitionkey | clusteringkey | data
--------------+---------------+----------------------
 eagertoLearn |     askubuntu | linux shell question
 eagertoLearn | google groups |         cql question
 eagertoLearn | stackoverflow |   cassandra question

(3 rows)
Run Code Online (Sandbox Code Playgroud)

CQL 说我已经返回 3 行,但这 3 行属于同一分区键,因此这是 1 行宽。

HTH,卡洛