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

Модуль dictionary

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

Router API

После применения конфигурации кластера в узлах с ролью dictionary.roles.router становится доступна глобальная переменная dictionary_router, содержащая необходимые для работы методы.

dictionary_router.get(entity_name, key)

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

Параметры:

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

Возвращает:

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

dictionary_router.set(entity_name, key, value)

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

Параметры:

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

Возвращает:

  • тип booleantrue, если операция выполнена успешно;
  • тип string — информация об ошибке, если она произошла, иначе nil.

dictionary_router.del(entity_name, key)

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

Параметры:

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

Возвращает:

  • тип booleantrue, если операция выполнена успешно;
  • тип string — информация об ошибке, если она произошла, иначе nil.

dictionary_router.get_keys(entity_name[, opt])

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

  • тип table — список ключей.

dictionary_router.get_entity(entity_name[, opt])

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

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

dictionary_router.get_batch(entity_name, key_list)

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

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

dictionary_router.set_batch(entity_name, key_value)

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

  • тип booltrue, если операция выполнена успешно.

dictionary_router.del_entity(entity_name)

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

  • тип booltrue, если операция выполнена успешно.

dictionary_router.check_consistency()

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

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

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

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

Возвращает:

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

Storage API

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

dictionary.get(entity_name, key)

Получить значение элемента словаря.

Параметры:

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

Возвращает:

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

Возвращаемый тип: any

dictionary.set(entity_name, key, value)

Сохранить значение элемента словаря.

Параметры:

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

Возвращает:

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

dictionary.del(entity_name, key)

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

Параметры:

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

Возвращает:

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

dictionary.get_keys(entity_name[, opt])

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

  • тип table — список ключей.

dictionary.get_entity(entity_name[, opt])

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

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

dictionary.get_batch(entity_name, key_list)

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

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

dictionary.set_batch(entity_name, key_value)

Доступно с версии 1.1.0.

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

Параметры:

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

Возвращает:

  • тип booltrue, если операция выполнена успешно.

dictionary.del_entity(entity_name)

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

Параметры:

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

Возвращает:

  • тип booltrue, если операция выполнена успешно.

dictionary.try_sync()

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

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

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

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

Возвращает:

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