.. _tarantool-server-config: ``findface-tarantool-server`` --------------------------------- The ``findface-tarantool-server`` service provides interaction between the ``findface-sf-api`` service and the Tarantool-based biometric database in the following way: .. tip:: See `Tarantool official documentation `_ for details. * From ``findface-sf-api``, ``findface-tarantool-server`` receives data, such as information of detected in video faces, to write into the biometric database. * By request from ``findface-sf-api``, ``findface-tarantool-server`` performs database searches and returns search results. To increase search speed, multiple ``findface-tarantool-server`` shards can be created on each Tarantool host. Their running concurrently leads to a remarkable increase in performance (70x-100x). Functionality: * saving face data to the biometric database, * database search, * implementation of direct API requests to the database (see :ref:`tarantool-api`). The ``findface-tarantool-server`` configuration is done through the ``/etc/tarantool/instances.enabled/<*>.lua`` configuration file. In a cluster environment, configuration has to be done for each shard. .. code:: -- -- Please, read the tarantool cfg doc: -- https://tarantool.org/doc/reference/configuration/index.html#box-cfg-params -- box.cfg{ --port to listen, direct tarantool access --Only need for admin operations --THIS IS NOT PORT YOU NEED FOR facenapi/sf-api listen = '127.0.0.1:33001', --Directory to store data vinyl_dir = '/opt/ntech/var/lib/tarantool/shard-001', work_dir = '/opt/ntech/var/lib/tarantool/shard-001', memtx_dir = '/opt/ntech/var/lib/tarantool/shard-001/snapshots', wal_dir = '/opt/ntech/var/lib/tarantool/shard-001/xlogs', --Maximum mem usage in bytes memtx_memory = 200 * 1024 * 1024, checkpoint_interval = 3600*4, checkpoint_count = 3, --uncomment only if you know what you are doing!!! and don't forget box.snapshot() -- wal_mode = 'none', --if true, tarantool tries to continue if there is an error while reading a snapshot/xlog files: skips invalid records, reads as much data as possible and re-builds the file -- force_recovery = true, } pcall(function() box.schema.user.grant('guest', 'execute,read,write', 'universe') end) dofile("/etc/ffsecurity/tnt_schema.lua") -- host,port to bind for http server -- this is what you need for facenapi FindFace = require("FindFace") FindFace.start("127.0.0.1", 8101, { license_ntls_server="127.0.0.1:3133", facen_size=480, meta_scheme = meta_scheme }) When configuring ``findface-tarantool-server``, refer to the following parameters: +--------------------------+----------------------------------------------------------------------------------------------------------+ | Parameter | Description | +==========================+==========================================================================================================+ | ``memtx_memory`` | Maximum RAM that can be used by a Tarantool shard. Set in bytes, depending on the number of faces the | | | shard handles. Consult our experts by support@ntechlab.com before setting this parameter. | +--------------------------+----------------------------------------------------------------------------------------------------------+ | ``force_recovery`` | Enables automatic database recovery. In this case, each time an error occurs while reading a snapshot or | | | xlog file, Tarantool will skip invalid records, read as much data as possible, and re-build the file. | +--------------------------+----------------------------------------------------------------------------------------------------------+ | ``license_ntls_server`` | IP address and port of the ``findface-ntls`` license server. | +--------------------------+----------------------------------------------------------------------------------------------------------+ | ``facen_size`` | Feature vector size. Before editing this parameter, be sure to consult NTechLab experts. | +--------------------------+----------------------------------------------------------------------------------------------------------+ | ``meta_scheme`` | A database structure to store the face recognition results. The structure is created as a set of fields. | | | Describe each field with the following parameters: ``id``: field id; ``name``: field name, must be the | | | same as the name of a relevant face parameter; ``field_type``: data type; ``default``: field default | | | value, if a default value exceeds ‘1e14 – 1', use a string data type to specify it, for example, | | | ``"123123.."`` instead of ``123123..``. | +--------------------------+----------------------------------------------------------------------------------------------------------+ The default database structure is passed from ``/etc/ffsecurity/tnt_schema.lua`` to the ``meta_scheme`` parameter if FindFace Enterprise Server is installed from the installer. If it is installed from the apt repository, you will have to :ref:`manually set ` it via the configuration file.