是啥导致卡桑德拉大排长龙?

Posted

技术标签:

【中文标题】是啥导致卡桑德拉大排长龙?【英文标题】:what leads to wide row in cassandra?是什么导致卡桑德拉大排长龙? 【发布时间】:2014-08-01 21:33:37 【问题描述】:

我从这个post中找到了以下内容:

create table posts(username varchar, time timeuuid, post_text varchar, primary key(username, time))

只有与主键中第一个元素的变体一样多的 CF 行。如果此元素的基数非常低,则可能会出现问题,因为您最终可能会得到非常宽的 CF 行。

我的观点是:

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

【问题讨论】:

【参考方案1】:

这是定义和字典的问题。 宽行和行不是一回事——给出一个定义,我会说在带有 PK(partition, clustering) 的表中,wide rows 的数量与分区键。 行数由每个分区的所有聚类键的总和给出。

所以在你引用的那句话中,作者写了“rows”,但他的意思是“wide-rows”。

CF wide-rows 的数量与 主键中的第一个元素。如果这可能是一个问题 元素的基数非常低,因为您最终会得到非常 wide CF 行。

可能在撰写本文时,宽行一词并未如此使用。 所以给定这样一张表

CREATE TABLE wide_rows (
  partitionkey text,
  clusteringkey text,
  data text,
  PRIMARY KEY ((partitionkey), clusteringkey)
)

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

insert into wide_rows(partitionkey, clusteringkey, data) VALUES ( 'eagertoLearn', '***', '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 | *** |   cassandra question

(3 rows)

CQL 说我返回了 3 行,但是这 3 行属于同一个分区键,所以这是 1 行宽。

HTH, 卡罗

【讨论】:

感谢您的回答。如上所述的低基数和高基数是什么意思 基数是指可能的变化。假设您存储 cmets,每条评论都有从 1 到 10 的投票。如果您选择投票作为分区键,则您的基数键较低,因为您只能拥有 10 个可能的宽行键。如果您选择用户 ID,则您可以拥有与注册到评论平台的用户一样多的宽行 我在这里发布了一个关于基数的问题。请帮忙。谢谢:***.com/questions/25101176/…

以上是关于是啥导致卡桑德拉大排长龙?的主要内容,如果未能解决你的问题,请参考以下文章

德国巨头发明的新型电梯,太颠覆了!

由于未知的列族,卡桑德拉没有开始

效率至上的时代,你需要这款PDF转Word工具!

逛超市偶遇一家乌龙煎茶饮店,那景象我可惊呆了

开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)

无法启动卡桑德拉