TWCS - отличный вариант при определенных обстоятельствах. Вот что следует иметь в виду:
1) Одно из больших преимуществ TWCS заключается в том, что слияния / согласования между sstables не происходит. Самый старый просто «отрублен». Из-за этого вы не хотите, чтобы строки / ячейки занимали несколько «сегментов / окон». Например, если вы вставляете один столбец в течение одного окна, а затем в следующее окно, вы вставляете другой столбец (т.е. обновление той же строки, но другого столбца в более поздний период времени). Вместо сжатия, создающего одну строку с обоими столбцами, TWCS отключит один из столбцов (самый старый). На самом деле я не уверен, позволит ли TWCS даже позволить этому произойти, но приводил вам пример того, что произойдет, если это произойдет. В этом примере я считаю, что TWCS будет запрещать удаление любого sstable, пока не истечет срок действия обоих окон. Хотя не уверен на 100%. В любом случае, избегайте этого сценария.
2) TWCS сталкивается с аналогичными проблемами, когда происходят записи вне времени (перекрытие). В последней статье описана замечательная статья, объясняющая это:
https://thelastpickle.com/blog/2016/12/08/TWCS-part1.html
Перекрытие может произойти из-за ремонта или из-за старого уплотнения (например, если вы использовали STCS, а затем переключились на TWCS, некоторые из sstables могутoverlap).
Если существует перекрытие, скажем, между двумя sstables, вам нужно дождаться полного истечения срока действия обоих sstables, прежде чем TWCS сможет удалить любой из них, и когда это произойдет, оба будут удалены.
Если вы избегаете обоих сценариев, описанных выше, TWCS очень эффективен из-за характера того, как он очищает вещи - больше не нужно объединять sstables. Просто удалите самое старое окно.
Когда вы настраиваете TWCS, вы должны помнить, что самое старое окно удаляется после истечения TTL и прохождения GC Grace - не забудьте добавить эту часть. Как вы уже описали, наличие различного числа TTL среди строк может задержать удаление окон. Если вы хотите увидеть, что блокирует TWCS от удаления sstable или как выглядит sstables, вы можете использовать sstableexpiredblockers или скрипт в вышеупомянутом URL (который по сути является sstablemetadata с некоторыми причудливыми сценариями).
Надеюсь, это поможет.
-Джим