TDB Documentation portal logo
Помощь
Обновлена 30 июня 2026 г. в 07:00

Модуль dictionary

Модуль dictionary предоставляет методы для работы со словарями и используется на узлах с включенной технологической ролью roles.dictionary-router или roles.dictionary-storage.

Каждый метод в списке ниже может быть вызван как с роутера, так и с хранилища. При вызове с роутера вызов перенаправляется на один из доступных узлов с ролью roles.dictionary-storage. При вызове с хранилища метод выполняется сразу.

Разрешения на запуск методов собраны в пользовательскую роль dictionary_api_executor.

Вызвать метод в новом формате через утилиту tt CLI или в веб-интерфейсе TCM во вкладке Terminal (TT Connect) можно через box.schema.func.call, например:

box.schema.func.call('dictionary_router_set', 'categories', '1', 'Shops')

Вызвать метод в старом формате можно напрямую, например:

dictionary_router.set('categories', '1', 'Shops')

dictionary_get(entity_name, key)

local value = dictionary_router_get(entity_name, key) — вызов на роутереlocal value = dictionary_get(entity_name, key) — вызов на хранилище

Получить значение элемента с одного из доступных узлов со словарем.

Параметры:

  • entity_name (string) — название словаря. Если названия нет, укажите пустую строку;
  • key (string) — идентификатор элемента словаря.

Возвращает:

  • value (any) — данные элемента словаря по идентификатору, или nil, если данных с таким идентификатором нет.

dictionary_set(entity_name, key, value[, opt])

local ok, error_message = dictionary_router_set(entity_name, key, value, opt) — вызов на роутереlocal ok, error_message = dictionary_set(entity_name, key, value, opt) — вызов на хранилище

Сохранить значение элемента в один из доступных узлов со словарем.

Параметры:

  • entity_name (string) — название словаря. Если названия нет, укажите пустую строку;
  • key (string) — идентификатор элемента словаря;
  • value (any) — данные элемента словаря;
  • opt (table) — дополнительные параметры вызова:
    • wait_consistency (boolean) — ждать окончания репликации по всем узлам. Все узлы при этом должны быть рабочими (healthy). Запрещено использовать внутри транзакции. Опция гарантирует, что при следующем чтении с любого узла будут получены актуальные данные;
    • wait_consistency_timeout (number) — максимальное время ожидания репликации по всем узлам в секундах. Значение по умолчанию: 3 секунды.

Возвращает:

  • ok (boolean) — true, если операция выполнена успешно;
  • error_message (string) — информация об ошибке, если она произошла, иначе nil.

dictionary_del(entity_name, key[, opt])

local ok, error_message = dictionary_router_del(entity_name, key, opt) — вызов на роутереlocal ok, error_message = dictionary_del(entity_name, key, opt) — вызов на хранилище

Удалить значение элемента в одном из доступных узлов со словарем.

Параметры:

  • entity_name (string) — название словаря. Если названия нет, укажите пустую строку;
  • key (string) — идентификатор удаляемого элемента словаря;
  • opt (table) — дополнительные параметры вызова:
    • wait_consistency (boolean) — ждать окончания репликации по всем узлам. Все узлы при этом должны быть рабочими (healthy). Запрещено использовать внутри транзакции. Опция гарантирует, что при следующем чтении с любого узла будут получены актуальные данные;
    • wait_consistency_timeout (number) — максимальное время ожидания репликации по всем узлам в секундах. Значение по умолчанию: 3 секунды.

Возвращает:

  • ok (boolean) — true, если операция выполнена успешно;
  • error_message (string) — информация об ошибке, если она произошла, иначе nil.

dictionary_get_keys(entity_name[, opt])

local key_list = dictionary_router_get_keys(entity_name, opt) — вызов на роутереlocal key_list = dictionary_get_keys(entity_name, opt) — вызов на хранилище

Получить все ключи для словаря.

Параметры:

  • entity_name (string) — название словаря;
  • opt (table) — дополнительные параметры вызова:
    • limit (number) — максимальное число ключей в ответе. Значение по умолчанию: 5000;
    • yield (number) — количество ключей до следующей передачи управления. Значение по умолчанию: 1000.

Возвращает:

  • key_list (table) — список ключей.

dictionary_get_entity(entity_name[, opt])

local data = dictionary_router_get_entity(entity_name, opt) — вызов на роутереlocal data = dictionary_get_entity(entity_name, opt) — вызов на хранилище

Получить все данные словаря.

Параметры:

  • entity_name (string) — название словаря;
  • opt (table) — дополнительные параметры вызова:
    • limit (number) — максимальное число ключей в ответе. Значение по умолчанию: 1000;
    • yield (number) — количество ключей до следующей передачи управления. Значение по умолчанию: 1000.

Возвращает:

  • key_value (table) — ассоциативный массив ключ-значение;
  • qty (number) — число прочитанных строк.

dictionary_get_batch(entity_name, key_list)

local key_value = dictionary_router_get_batch(entity_name, key) — вызов на роутереlocal key_value = dictionary_get_batch(entity_name, key) — вызов на хранилище

Получить значения словаря по списку ключей.

Параметры:

  • entity_name (string) — название словаря;
  • key (table) — список ключей.

Возвращает:

  • key_value (table) — ассоциативный массив ключ-значение.

dictionary_set_batch(entity_name, key_value)

local res = dictionary_router_set_batch(entity_name, key_value) — вызов на роутереlocal res = dictionary_set_batch(entity_name, key_value) — вызов на хранилище

Задать пачку значений словаря.

Параметры:

  • entity_name (string) — название словаря;
  • key_value (table) — ассоциативный массив ключ-значение.

Возвращает:

  • res (boolean) — true, если операция выполнена успешно.

dictionary_del_entity(entity_name)

local res = dictionary_router_del_entity(entity_name) — вызов на роутереlocal res = dictionary_del_entity(entity_name) — вызов на хранилище

Удалить все значения словаря.

Параметры:

  • entity_name (string) — название словаря.

Возвращает:

  • res (boolean) — true, если операция выполнена успешно.

dictionary_check_consistency()

local res, error_message = dictionary_router_check_consistency() — вызов на роутереlocal res, error_message = dictionary_check_consistency() — вызов на хранилище

Для каждого узла со словарем вычислить хэш всех его данных. При вычислении учитываются поля:

  • название словаря (entity_name);
  • ключ (key);
  • значение (value).

Для успешного выполнения все узлы со словарями должны быть рабочими (healthy).

Параметры: нет

Возвращает:

  • result (table) — структура, содержащая поля:
    • consistency (boolean) — true, если на всех узлах одинаковый хэш данных словаря;
    • hash_map (table) — справочная таблица, которая содержит перечень узлов со словарями и их хэши данных;
  • error_message (string) — информация об ошибке, если она произошла, иначе nil.

dictionary_check_key_consistency()

local res, error_message = dictionary_router_check_key_consistency(entity_name, key) — вызов на роутереlocal res, error_message = dictionary_check_key_consistency(entity_name, key) — вызов на хранилище

Для каждого узла со словарем вычислить хэш одного ключа. При вычислении учитываются поля:

  • название словаря (entity_name);
  • ключ (key);
  • значение (value).

Для успешного выполнения все узлы со словарями должны быть рабочими (healthy).

Параметры:

  • entity_name (string) — название словаря;
  • key (string) — идентификатор элемента словаря.

Возвращает:

  • result (table) — структура, содержащая поля:
    • consistency (bool) — true, если на всех узлах одинаковый хэш данных словаря;
    • hash_map (table) — справочная таблица, содержащая перечень узлов со словарями с хэшем выбранного ключа;
  • error_message (string) — информация об ошибке, если она произошла, иначе nil.

dictionary_wait_key_consistency(entity_name, key)

local res, error_message = dictionary_router_wait_key_consistency(entity_name, key) — вызов на роутереlocal res, error_message = dictionary_wait_key_consistency(entity_name, key) — вызов на хранилище

Ждать наступления момента, когда данные по ключу на всех узлах со словарями станут одинаковыми. Для успешного выполнения все узлы со словарями должны быть рабочими (healthy).

Параметры:

  • entity_name (string) — название словаря;
  • key (string) — идентификатор элемента словаря;
  • timeout (number) — время ожидания в секундах. Значение по умолчанию: 3.

Возвращает:

  • error_message (string) — информация об ошибке, если она произошла, иначе nil.

dictionary_notify_neighbors()

dictionary_router_notify_neighbors() — вызов на роутереdictionary_notify_neighbors() — вызов на хранилище

Выполнить асинхронную попытку оповестить ближайший доступный экземпляр о новых данных.

Параметры: нет

Возвращает: нет

dictionary_try_sync()

local ok, error_message = dictionary_router_try_sync() — вызов на роутереlocal ok, error_message = dictionary_try_sync() — вызов на хранилище

Запустить принудительно обмен данными с соседними экземплярами. При таком обмене данных экземпляр:

  • запрашивает новые данные с других экземпляров;
  • оповещает соседние экземпляры о своих новых данных.

При работе со словарями попытка обмена данными с другими узлами происходит в двух случаях:

  • при выполнении операции сохранения (set) или удаления (del) не в транзакции;
  • по таймеру, периодичность которого регулируется опцией конфигурации dictionary.worker_sleep_in_second.

Если операции set или del выполняются в транзакции, библиотека не начинает синхронизацию с другими узлами. В этом случае в логике клиентской функции можно принудительно вызвать обмен данными после окончания транзакции, чтобы не дожидаться срабатывания таймера.

Параметры: нет

Возвращает:

  • ok (boolean) – true, если операция выполнена успешно;
  • error_message (string) – информация об ошибке, если она произошла, иначе nil.