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