Что будет стратегия уплотнения для выполнения лучшего в диапазонах на кластерных колоннах
Вопрос
У меня есть таблица кассандра
CREATE TABLE schema1 (
key bigint,
lowerbound bigint,
upperbound bigint,
data blob,
PRIMARY KEY (key, lowerbound,upperbound)
) WITH COMPACT STORAGE ;
.
Я хочу выполнить запрос диапазона, используя CQL
Select lowerbound, upperbound from schema1 where key=(some key) and lowerbound<=123 order by lowerbound desc limit 1 allow filtering;
.
Примечание Мое чтение: запись на запись 1: 1
Решение
Выровненное уплотнение будет означать меньшее количество Sstable для ваших запросов на ключ, но требует дополнительных IO.Кроме того, во время уплотнения он использует на 10% больше диска, чем данные, в то время как для размера многоуровневого уплотнения вам нужно двойное.Что лучше зависит от вашей установки, запросов и т. Д. Вы испытываете проблемы с производительностью?Если нет, и если бы я мог справиться с Extra IO, я мог бы выбрать выровненные, так как это означает, что мне не нужно поддерживать 50 +% заседаний в плане дискового пространства для уплотнения.Но опять же, нет «одного правильного пути».
Возможно прочитать это: http://www.datastax.com/dev/blog/leveled-Compaction-In-Apache-Cassandra
Другие советы
Размерное уплотнение - это по умолчанию, и должно соответствовать большинству случаев использования. В 2012 году DataStax опубликовал статью под названием « При использовании выровненного уплотнения , в котором указано три (основные) условия, для которых выровненное уплотнение было хорошей идеей:
- Высокая чувствительность к задержке для чтения (ваши запросы должны встретить задержку SLA в 99-м процентиле).
- высокое соотношение чтения / записи
- строки часто обновляются
- Ваши диски не могут обрабатывать уплотнение I / O
- тяжелые нагрузки на запись
- строки - однажды запись - однажды
Это также идентифицирует три сценария, когда выровненное уплотнение не является хорошей идеей:
Обратите внимание, как ни один из шести сценариев, которые я не упомянул выше, не специфичен для цепных запросов.
Мой вопрос будет "какую проблему вы пытаетесь исправить?" Вы упомянули «Выполнение лучше», но я обнаружил, что проблемы производительности запросов, как правило, более привязаны к дизайну модели данных. Переключение стратегии уплотнения не собирается много помогать, если вы работаете с неэффективной стратегией первичной ключей. В силу того факта, что ваш запрос требует ALLOW FILTERING
, я бы сказал, что изменяющаяся стратегия уплотнения не собирается много помогать.
Документы DataStax содержат раздел на Щетка Над строки разделов , который, кажется, несколько похож на ваш запрос. Дайте взгляду и посмотрим, поможет ли это.
Когда строки часто обновляются
От статьи DataSatx
Если вы имеете дело с узкими рядами, где столбцы часто перезаписываются (например, «последний доступ» отметку «Последний доступ» в семействе столбцов пользователей) или широкие строки, когда новые столбцы постоянно добавляются, когда вы обновляете строку с уставкой Size Systems, он будетбыть распространенным через несколько Sstable.Выровненное уплотнение, с другой стороны, сохраняет количество Sstackable, которые строка распространяется по очень низкой, даже при частом обновлении строки.