Изменение структуры базы данных векторов признаков
В некоторых случаях вам может потребоваться применить новую структурную схему к базе данных векторов признаков Tarantool, например, при обновлении до последней версии продукта или если необходимо усовершенствовать структуру базы данных, добавив в нее дополнительные параметры, расширенные метаданные объектов и т. д.
В этом разделе:
О структуре биометрической базы данных
В FindFace Multi структура базы данных задается через файл /etc/findface-security/tnt_schema.lua
.
Структура представляет собой набор полей, каждое из которых описывается следующими параметрами:
id: id поля;
name: название поля, должно совпадать с названием соответствующего параметра объекта;
field_type: тип данных;
default: значение по умолчанию. Если значение по умолчанию больше ‘1e14 – 1’, то его следует записывать в виде строки, т. е.
“123123..”
вместо123123..
.
Используемый по умолчанию файл tnt_schema.lua
доступен по ссылке
.
Изменение структуры
Для изменения структуры базы данных выполните следующие действия:
Остановите сервис
findface-security
.sudo systemctl stop findface-security.service
Создайте резервную копию базы данных векторов признаков в любой выбранной директории, например,
/etc/findface_dump
.Совет
Подробнее см. Резервное копирование и восстановление хранилищ данных.
mkdir -p /etc/findface_dump cd /etc/findface_dump sudo findface-storage-api-dump -config /etc/findface-sf-api.ini
Подготовьте файл
tnt_schema.lua
с новой структурой базы данных.Измените структуру базы данных с помощью подготовленного файла
tnt_schema.lua
.sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
Перейдите в директорию с файлами конфигурации Tarantool
/etc/tarantool/instances.available/
. Убедитесь, что перед секциейFindFace.start
добавлена строкаdofile("/etc/findface-security/tnt_schema.lua")
, а переменныеmeta_scheme
иmeta_indexes
определены в параметрахFindFace.start
.sudo vi /etc/tarantool/instances.available/<shard_00N>.lua dofile("/etc/findface-security/tnt_schema.lua") FindFace.start("127.0.0.1", 8101, { license_ntls_server="127.0.0.1:3133", meta_indexes=meta_indexes, meta_scheme = meta_scheme })
Очистите директории с данными для всех активных шардов.
sudo rm /opt/ntech/var/lib/tarantool/shard-*/{index,snapshots,xlogs}/*
Восстановите базу данных Tarantool из резервной копии.
Важно
Если некоторые прежние поля отсутствуют в новой структуре базы данных, сначала потребуется вручную удалить соответствующие данные из резервной копии.
cd /tmp/dump for x in *.json; do curl -X POST "http://127.0.0.1:18411/v2/galleries/${x%%.json}"; done for x in *.json; do sudo findface-storage-api-restore -config /etc/findface-sf-api.ini < "$x"; done
Запустите сервис
findface-security
.sudo systemctl start findface-security.service