Модуль dictionary | Tdb

Версия:

latest

Модуль 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) – идентификатор элемента словаря.

Возвращает:

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

  • nil, если данных с таким идентификатором нет.

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

dictionary_router.set(entity_name, key, value)

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

Параметры:

  • entity_name (string) – название словаря. Если названия нет, укажите пустую строку;

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

  • value (any) – данные элемента словаря.

Возвращает:

  • ok (boolean) – true, если операция выполнена успешно;

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

dictionary_router.del(entity_name, key)

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

Параметры:

  • entity_name (string) – название словаря. Если названия нет, укажите пустую строку;

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

Возвращает:

  • ok (boolean) – true, если операция выполнена успешно;

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

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.try_sync()

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

  • при выполнении операции сохранения (set()) или удаления (del()) не в транзакции;

  • по таймеру, периодичность которого регулируется опцией конфигурации dictionary.worker_sleep_in_second.

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

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

Возвращает:

  • ok (boolean) – true, если операция выполнена успешно;

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

Нашли ответ на свой вопрос?
Обратная связь