TTL гарантирует, что после истечения срока действия чтение данных с истекшим сроком действия ничего не даст. То, как это достигается скрытно с файлами на диске, заключается в том, что старые данные остаются на диске, в каком-то старом sstable, и когда Scylla читает их, он замечает, что эти данные уже истекли, и не возвращает их. Только позже, когда Scylla решает compact sstable, содержащий данные с истекшим сроком, он фактически удаляет эти старые данные с диска (и, иногда, должен заменить их маркером удаления, tombstone *) 1004 * - детали этого не имеют отношения к вашему вопросу).
Итак, ответ на ваши вопросы:
Ответ зависит от того, что вы подразумеваете под "полезным" для восстановления ". Снимок содержит дословные копии существующих sstables, а старые снимки до истечения срока действия (или, как объяснялось выше, также в течение некоторого периода времени после истечения срока действия) действительно будут также содержать данные с истекшим сроком действия. Этот снимок можно «восстановить» в действующей базе данных, но даже если истекшие данные все еще там, чтение из него не вернет его - так как это требование с даты истечения срока действия ...
Нет. Снимок хранит дословные копии sstables, которые существуют в действующей базе данных. Сжатие происходит только в действующей базе данных - sstables в снимке не затрагиваются после сохранения.
Если я правильно понимаю вашу цель, вы ищете способ «воскресить» данные, срок действия которых истек, путем чтения из старого снимка, который содержал эти данные до истечения срока их действия. Насколько я знаю, ни Сцилла, ни Кассандра не предлагают официального механизма для этого. Один из способов добиться этого - восстановить старый моментальный снимок в новом кластере с установленными часами до даты истечения срока действия. Затем, когда старые данные будут прочитаны, они не будут считаться устаревшими.