Архивация данных по их времени жизни¶
Доступно с версии 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 не влияет на архивацию данных.
Особенности работы
На каждый индекс спейса задается только одна задача архивации. Создать несколько задач по архивации на один индекс спейса невозможно. При этом можно создать несколько задач архивации на один спейс.
Архивация запускается на узле, который становится доступным для записи, и завершается на узле, когда он переходит в режим только для чтения.