Модуль 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) – данные элемента словаря.
Возвращает:
- тип - boolean–- true, если операция выполнена успешно;
- тип - string– информация об ошибке, если она произошла, иначе- nil.
dictionary_router.del(entity_name, key)¶
Удалить значение элемента в одном из доступных узлов со словарем.
Параметры:
- entity_name(- string) – название словаря. Если названия нет, укажите пустую строку;
- key(- string) – идентификатор элемента словаря.
Возвращает:
- тип - boolean–- true, если операция выполнена успешно;
- тип - 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) – ассоциативный массив- ключ-значение.
Возвращает:
- тип - bool–- true, если операция выполнена успешно.
dictionary_router.del_entity(entity_name)¶
Доступно с версии 1.1.0.
Удалить все значения словаря.
Параметры:
- entity_name(string) – название словаря.
Возвращает:
- тип - bool–- true, если операция выполнена успешно.
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) – ассоциативный массив- ключ-значение.
Возвращает:
- тип - bool–- true, если операция выполнена успешно.
dictionary.del_entity(entity_name)¶
Удалить все значения словаря.
Параметры:
- entity_name(string) – название словаря.
Возвращает:
- тип - bool–- true, если операция выполнена успешно.
dictionary.try_sync()¶
Запустить принудительно обмен данными с соседними экземплярами. При работе со словарями попытка обмена данными с другими узлами происходит в двух случаях:
- при выполнении операции сохранения ( - set()) или удаления (- del()) не в транзакции;
- по таймеру, периодичность которого регулируется опцией конфигурации dictionary.worker_sleep_in_second. 
Если операции set() или del() выполняются в транзакции, библиотека не начинает синхронизацию с другими узлами.
В этом случае в логике клиентской функции можно принудительно вызвать обмен данными после окончания транзакции,
чтобы не дожидаться срабатывания таймера.
Параметры: нет
Возвращает:
- ok(boolean) –- true, если операция выполнена успешно;
- error_message(string) – информация об ошибке, если она произошла, иначе- nil.