是啥导致卡桑德拉大排长龙?
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/…以上是关于是啥导致卡桑德拉大排长龙?的主要内容,如果未能解决你的问题,请参考以下文章