TDB Documentation portal logo
Помощь

Архивация данных по их времени жизни

Доступно с версии 3.0.0.

Tarantool DB поддерживает архивацию данных — автоматический перенос устаревших данных из спейсов на движке memtx в спейсы vinyl на основе времени жизни кортежей (TTL), например по времени их создания (created_at) или обновления (updated_at). Такая архивация данных позволяет:

  • держать горячие данные в оперативной памяти (memtx) для высокой производительности;
  • переносить холодные данные на диск (vinyl) для долгосрочного хранения.

Перенос данных на диск позволяет освободить оперативную память от значимых данных, которые уже не изменяются и запрашиваются редко — например, закрытых заявок, обработанных событий, завершённых сессий.

Для архивации устаревших кортежей используются модуль cooler и отдельная технологическая роль roles.cooler:

  • роль roles.cooler задается на экземплярах хранилища кластера и отвечает за запуск и остановку архивации, обработку смены мастер-узла в наборе реплик, а также конфигурацию модуля expirationd. Модуль expirationd используется для итерации по индексам спейсов и выполнения фоновых задач архивации;
  • модуль cooler позволяет задавать архивацию данных в миграциях, определить движок, в котором сейчас находятся данные, а также отвечает за DDL-операции по созданию спейса vinyl и просмотр состояния и статистики архивации.

Гарантии

  • Перенос кортежей из memtx в vinyl устойчив к сбоям. Сначала происходит вставка архивируемого кортежа в спейс vinyl. Соответствующий кортеж удаляется из memtx-спейса только при его успешном добавлении в спейс vinyl.
  • Никогда не возникает состояния, при котором архивируемый кортеж отсутствует и в memtx, и в vinyl.
  • Для спейса vinyl можно установить те же параметры доступа, что и для memtx, используя функцию box.schema.user.grant().
  • Включение и выключение транзакционного менеджера memtx MVCC не влияет на архивацию данных.

Особенности работы

  • На каждый индекс спейса задается только одна задача архивации — фоновая задача модуля expirationd, которая периодически сканирует спейс по указанному ключу и перемещает старые кортежи в архивный спейс по заданному условию. Создать несколько задач по архивации на один индекс спейса невозможно. При этом можно создать несколько задач архивации на один спейс.
  • Архивация запускается на узле, который становится доступным для записи, и завершается на узле, когда он переходит в режим только для чтения.