Снимок сохранит данные относительно таблицы с истекшим TTL или таблицей с истекшим TTL в Кассандре - PullRequest
1 голос
/ 16 февраля 2020

У меня есть один сценарий, где я вставляю данные со значением TTL через 5 дней, поэтому они должны быть удалены через 5 дней после истечения значения TTL для вставленных строк. Я ежедневно делаю моментальные снимки своих узлов Cassandra, поэтому мои вопросы выглядят следующим образом: -

1) Будет ли моментальный снимок содержать мои просроченные вставленные данные и будет ли полезен для восстановления при необходимости? или он удалит все вставленные строки автоматически после истечения TTL?

2) Сжатие происходит на sstables находится в папке моментальных снимков?

Заранее спасибо!

1 Ответ

3 голосов
/ 16 февраля 2020

TTL гарантирует, что после истечения срока действия чтение данных с истекшим сроком действия ничего не даст. То, как это достигается скрытно с файлами на диске, заключается в том, что старые данные остаются на диске, в каком-то старом sstable, и когда Scylla читает их, он замечает, что эти данные уже истекли, и не возвращает их. Только позже, когда Scylla решает compact sstable, содержащий данные с истекшим сроком, он фактически удаляет эти старые данные с диска (и, иногда, должен заменить их маркером удаления, tombstone *) 1004 * - детали этого не имеют отношения к вашему вопросу).

Итак, ответ на ваши вопросы:

  1. Ответ зависит от того, что вы подразумеваете под "полезным" для восстановления ". Снимок содержит дословные копии существующих sstables, а старые снимки до истечения срока действия (или, как объяснялось выше, также в течение некоторого периода времени после истечения срока действия) действительно будут также содержать данные с истекшим сроком действия. Этот снимок можно «восстановить» в действующей базе данных, но даже если истекшие данные все еще там, чтение из него не вернет его - так как это требование с даты истечения срока действия ...

  2. Нет. Снимок хранит дословные копии sstables, которые существуют в действующей базе данных. Сжатие происходит только в действующей базе данных - sstables в снимке не затрагиваются после сохранения.

Если я правильно понимаю вашу цель, вы ищете способ «воскресить» данные, срок действия которых истек, путем чтения из старого снимка, который содержал эти данные до истечения срока их действия. Насколько я знаю, ни Сцилла, ни Кассандра не предлагают официального механизма для этого. Один из способов добиться этого - восстановить старый моментальный снимок в новом кластере с установленными часами до даты истечения срока действия. Затем, когда старые данные будут прочитаны, они не будут считаться устаревшими.

...