Семейство стандартных столбцов и семейство супер столбцов

Я где-то читал, указывая, что для строки, имеющей тысячи столбцов в стандартном семействе столбцов, лучше спроектировать разделение их на супер-столбцы, и таким образом чтение будет очень эффективным, поскольку cassandra нужно будет только загружать и возвращать столбцы в заданное имя суперстолбца вместо загрузки и, возможно, возврата громадных столбцов столбцов. Может кто-нибудь, пожалуйста, подтвердите?

2 ответа

Решение

Это не хороший совет. На данный момент существует очень небольшое количество вариантов использования, для которых супер столбцы являются лучшим решением. Новые CompositeTypes - лучшее решение для большинства из того, для чего исторически использовались супер-столбцы.

С учетом вышесказанного, похоже, вам здесь не нужны CompositeTypes. Это правда, что если вы читаете очень большую строку, вы не должны откатывать всю строку сразу. Вместо этого вы должны извлекать части строки в непрерывных срезах.

По сути, вы будете выполнять серию get_slice()s. Для первого установите количество столбцов, скажем, 1000, а начало столбца - "". Затем возьмите имя последнего столбца из этого набора результатов (назовите его X) и сделайте другое get_slice() вызовите с числом столбцов 1000, но на этот раз установите начало столбца на X. Откажитесь от первого возвращаемого столбца (это будет X), а затем повторите все get_slice() обрабатывать, пока запрос не вернет менее 1000 столбцов, что означает, что вы достигли конца строки.

Вы можете получать больше или меньше 1000 за раз, в зависимости от размера вашего столбца.

Если столбцов будет много или данные должны быть проиндексированы, то лучше создать нормальное семейство столбцов, потому что: 1) подколонки super CF не индексируются, и 2) любой запрос на подколонку десериализует все подстолбцы. -колонки в супер колонке. Но это может быть ограничением в текущей базе кода, см. http://wiki.apache.org/cassandra/CassandraLimitations

Другие вопросы по тегам