что приводит к широкому ряду в кассандре?


person eagertoLearn    schedule 01.08.2014    source источник


Ответы (1)


Это проблема определений и словаря. Широкая строка и строка — это не одно и то же. Давая определение, я бы сказал, что в таблице с PK (раздел, кластеризация) будет столько широких строк, сколько ключи раздела. Вместо этого количество строк определяется суммой всех ключей кластеризации для каждого раздела.

Итак, в приведенном вами предложении автор написал «ряды», но имел в виду «широкие ряды».

Будет столько CF wide-rows, сколько вариантов первого элемента в вашем первичном ключе. Это может быть проблемой, если этот элемент имеет очень низкую мощность, так как вы можете получить очень широкие строки CF.

Вероятно, на момент написания статьи термин «широкий ряд» так не использовался. Итак, учитывая такую ​​​​таблицу

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

будут только широкие строки partitionkey, но количество строк зависит как от раздела, так и от кластеризации

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)

CQL говорит, что у меня есть 3 строки назад, но эти 3 строки принадлежат одному и тому же ключу раздела, поэтому это 1 широкая строка.

ХТХ, Карло

person Carlo Bertuccini    schedule 02.08.2014
comment
Спасибо за ответ. что подразумевается под низкой кардинальностью и высокой кардинальностью, как описано выше - person eagertoLearn; 02.08.2014
comment
Под кардинальностью понимают возможные вариации. Допустим, вы храните комментарии, каждый комментарий имеет голос от 1 до 10. Если вы выберете голосование в качестве ключа раздела, у вас будет ключ с низкой кардинальностью, поскольку у вас может быть только 10 возможных ключей широкой строки. Если вместо этого вы выберете идентификатор пользователя, у вас может быть столько широких строк, сколько у пользователя, зарегистрированного на платформе комментариев. - person Carlo Bertuccini; 02.08.2014
comment
Я разместил здесь вопрос о кардинальности. Пожалуйста помоги. Спасибо: stackoverflow.com/questions/25101176/ - person eagertoLearn; 03.08.2014