Автоматическое удаление устаревших кортежей из спейса¶
В этом руководстве описано, как настроить параметры устаревания данных в конфигурации,
чтобы автоматически удалять все кортежи в спейсе, которые старше заданного времени.
Подробнее о модуле expirationd можно узнать в разделе Устаревание данных.
Руководство включает следующие шаги:
Пререквизиты¶
Для выполнения примера требуются:
- установленный Docker-образ Tarantool DB; 
- приложение Docker Compose; 
- утилита tt CLI; 
- исходные файлы примера - expirationd.- Note - Есть два способа получить исходные файлы примера: - Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива: - tarantooldb-documentation-3.0.0.tar.gz. Пример- expirationdрасположен в таком архиве в директории- ./doc/examples/expirationd/.
- Отдельный архив expirationd.tar.gz, скачанный c сайта Tarantool. 
 
Запуск кластера¶
Для успешного запуска кластера должны быть свободны следующие порты:
- 2379 
- 3301–3308 
- 8081 
Перейдите в папку с примером expirationd:
cd ./doc/examples/expirationd/
Запустите кластер:
make start
Запущенный стенд состоит из:
- кластера Tarantool DB (2 роутера, 2 набора реплик по 3 хранилища); 
- кластера etcd из 3 узлов; 
- одного узла Tarantool Cluster Manager (TCM). 
После запуска должны работать все контейнеры, кроме init_host.
Также после запуска кластера становится доступен веб-интерфейс TCM. Для входа в TCM откройте в браузере адрес http://localhost:8081. Логин и пароль для входа:
- Username: - admin
- Password: - secret
В TCM откройте вкладку Stateboard.
Выберите в наборе реплик router-msk узел router-msk и в открывшемся окне перейдите на вкладку Terminal.
Во вкладке Terminal проверьте наличие спейса messages:
box.space
Спейс messages должен присутствовать в выводе, он создается при запуске кластера.
Описание миграции¶
В руководстве используется миграция из файла ./cluster/migrations/scenario/001_test.lua примера expirationd.
В этой миграции создан спейс messages со следующим форматом:
local s = box.schema.space.create('messages', {if_not_exists = true})
s:format({
    { name = 'id', type = 'number' },
    { name = 'bucket_id', type = 'unsigned' },
    { name = 'dt', type = 'datetime' },
    { name = 'data', type = 'any' },
})
s:create_index('pk', { parts = {'id'}, if_not_exists = true})
s:create_index('bucket_id', { parts = {'bucket_id'}, unique = false, if_not_exists = true})
Необходимо удалять все записи в спейсе старше заданного количества секунд. Количество секунд задается в конфигурации.
Смотрите также: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.
Подключение к узлу и загрузка тестовых данных¶
Чтобы начать работу с базой данных через интерактивную консоль Tarantool, нужно подключиться к узлу кластера. Сделать это можно двумя способами:
- в веб-интерфейсе TCM; 
- в терминале с помощью утилиты tt CLI: - tt connect admin:secret-cluster-cookie@localhost:3301 
Подключитесь к роутеру router-msk, используя первый способ – через TCM. Для этого:
- Перейдите на вкладку Stateboard. 
- Нажмите на набор реплик - router-msk.
- Выберите узел - router-mskи в открывшемся окне перейдите на вкладку Terminal.
Во вкладке Terminal добавьте тестовые данные в спейс:
crud.insert_object('messages', {id = 1, dt = require('datetime').now(), data = 'too'})
crud.insert_object('messages', {id = 2, dt = require('datetime').now(), data = 'foo'})
crud.insert_object('messages', {id = 3, dt = require('datetime').now(), data = 'bar'})
Чтобы просмотреть кортежи в спейсе messages, в веб-интерфейсе TCM перейдите на вкладку Tuples и выберите в списке спейс messages.
Откроется новая вкладка с содержимым кортежей спейса messages.
Кортежи будут удалены спустя заданное в настройках время – 15 секунд.
Конфигурация устаревания данных¶
В конфигурации кластера присутствует следующая секция:
roles_cfg:
  roles.expirationd:
    task_name1:
      space: messages
      options:
        args:
          lifetime_in_seconds: 15
          time_create_field: dt
Здесь:
- task_name1– название задачи по устареванию данных;- space– название спейса, по которому идет поиск устаревших кортежей;
- options.args– дополнительные опции конфигурации:- lifetime_in_seconds– время жизни кортежа в секундах;
- time_create_field– название поля, по которому проверяется время жизни кортежа.
 
 
Полное описание опций конфигурации expirationd приведено в соответствующем разделе Справочника по конфигурации.
Остановка кластера¶
Чтобы остановить кластер, выполните в локальном терминале следующую команду:
make stop