Модуль 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
.