Есть ли способ, чтобы Кассандра безопасно удалила надгробные камни * до истечения * gc_grace_seconds?

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

Возможно ли такое безопасное удаление надгробий в Кассандре?

Я бы предпочел установить gc_grace_seconds на бесконечность и полагаться на этот тип безопасного уплотнения надгробий, чем беспокоиться о сроках nodetool repair и gc_grace_seconds.


person jonderry    schedule 28.10.2014    source источник


Ответы (1)


Нет, невозможно удалить надгробные плиты, не изменив gc_grace_seconds.

Есть операции, при которых все 3 реплики могут подтвердить надгробие, удалить его, а затем понадобится позже. Рассмотрим случай, когда вам нужно передать более раннюю SSTable обратно в кластер.

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

Я рекомендую установить для gc_grace_seconds какое-нибудь разумное значение (10 дней вполне достаточно) и запланировать ремонт с помощью opscenter или cassandra-reaper.

person Jon Haddad    schedule 19.10.2015