Предсказуемое удаление строки Кассандры

У нас есть трудоемкий процесс записи на кластере 1.2.5 Cassandra. Поскольку дисковое пространство ограничено, мы должны время от времени удалять более старые данные. Это удаление начинается, когда объем свободного места на диске падает до определенного уровня. Мы узнали о роли надгробий, то есть они удаляются по истечении времени ожидания gc_grace и небольшого уплотнения. Итак, мы настроили "задержку терпения", и когда она истечет, мы можем снова проверить свободное место на диске.

Но нам требуется более предсказуемая схема удаления, поскольку мы не можем полагаться на то, что "незначительное сжатие может быть выполнено когда-нибудь". Это не кажется слишком конкретным, поэтому мы не знаем, когда нам следует снова проверять свободное место на диске. Может быть, вы можете предложить несколько идей.

1 ответ

Решение

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

Кроме того, с многоуровневым уплотнением (по умолчанию) вы можете запустить полное сжатие с nodetool compact, Это удалит все надгробия старше gc_grace.

Однако это переписывает все ваши данные в один большой SSTable, поэтому занимает время, пропорциональное вашему общему размеру данных. Вам также нужно будет использовать менее половины вашего дискового пространства, чтобы иметь возможность завершать последующие уплотнения.

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