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