Модуль dictionary | Tdb

Модуль dictionary

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

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

Разрешения на запуск методов собраны в пользовательскую роль dictionary_api_executor.

Примечание

Tarantool DB 2.x поддерживает как новый формат названий методов dictionary API (dictionary_router_get()), так и старый (dictionary_router.get()). Методы, добавленные в версии 2.x, поддерживают оба формата названий.

Вызвать метод в новом формате через tt CLI или в TCM во вкладке Terminal (TT Connect) можно через box.schema.func.call, например:

box.schema.func.call('dictionary_router_set', 'categories', '1', 'Shops')

Вызвать метод в старом формате можно напрямую, например:

dictionary_router.set('categories', '1', 'Shops')

Смотрите также: Совместимость модуля dictionary c Tarantool 1.x.

dictionary_get(entity_name, key)

local value = dictionary_router_get(entity_name, key) -- вызов на роутере
local value = dictionary_get(entity_name, key) -- вызов на хранилище

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

Параметры:

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

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

Возвращает:

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

dictionary_set(entity_name, key, value[, opt])

local ok, error_message = dictionary_router_set(entity_name, key, value, opt) -- вызов на роутере
local ok, error_message = dictionary_set(entity_name, key, value, opt) -- вызов на хранилище

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

Параметры:

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

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

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

  • opt (table) – дополнительные параметры вызова:

    • wait_consistency (boolean) – ждать окончания репликации по всем узлам. Все узлы при этом должны быть рабочими (healthy). Запрещено использовать внутри транзакции. Опция гарантирует, что при следующем чтении с любого узла будут получены актуальные данные;

    • wait_consistency_timeout (number) – максимальное время ожидания репликации по всем узлам в секундах. Значение по умолчанию: 3 секунды.

Возвращает:

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

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

dictionary_del(entity_name, key[, opt])

local ok, error_message = dictionary_router_del(entity_name, key, opt) -- вызов на роутере
local ok, error_message = dictionary_del(entity_name, key, opt) -- вызов на хранилище

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

Параметры:

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

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

  • opt (table) – дополнительные параметры вызова:

    • wait_consistency (boolean) – ждать окончания репликации по всем узлам. Все узлы при этом должны быть рабочими (healthy). Запрещено использовать внутри транзакции. Опция гарантирует, что при следующем чтении с любого узла будут получены актуальные данные;

    • wait_consistency_timeout (number) – максимальное время ожидания репликации по всем узлам в секундах. Значение по умолчанию: 3 секунды.

Возвращает:

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

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

dictionary_get_keys(entity_name[, opt])

local key_list = dictionary_router_get_keys(entity_name, opt) -- вызов на роутере
local key_list = dictionary_get_keys(entity_name, opt) -- вызов на хранилище

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

Параметры:

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

  • opt (table) – дополнительные параметры вызова:

    • limit (number) – максимальное число ключей в ответе. Значение по умолчанию: 5000;

    • yield (number) – количество ключей до следующей передачи управления. Значение по умолчанию: 1000.

Возвращает:

  • key_list (table) – список ключей.

dictionary_get_entity(entity_name[, opt])

local data = dictionary_router_get_entity(entity_name, opt) -- вызов на роутере
local data = dictionary_get_entity(entity_name, opt) -- вызов на хранилище

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

Параметры:

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

  • opt (table) – дополнительные параметры вызова:

    • limit (number) – максимальное число ключей в ответе. Значение по умолчанию: 1000;

    • yield (number) – количество ключей до следующей передачи управления. Значение по умолчанию: 1000.

Возвращает:

  • key_value (table) – ассоциативный массив ключ-значение;

  • qty (number) – число прочитанных строк.

dictionary_get_batch(entity_name, key_list)

local key_value = dictionary_router_get_batch(entity_name, key) -- вызов на роутере
local key_value = dictionary_get_batch(entity_name, key) -- вызов на хранилище

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

Параметры:

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

  • key (table) – список ключей.

Возвращает:

  • key_value (table) – ассоциативный массив ключ-значение.

dictionary_set_batch(entity_name, key_value)

local res = dictionary_router_set_batch(entity_name, key_value) -- вызов на роутере
local res = dictionary_set_batch(entity_name, key_value) -- вызов на хранилище

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

Параметры:

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

  • key_value (table) – ассоциативный массив ключ-значение.

Возвращает:

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

dictionary_del_entity(entity_name)

local res = dictionary_router_del_entity(entity_name) -- вызов на роутере
local res = dictionary_del_entity(entity_name) -- вызов на хранилище

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

Параметры:

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

Возвращает:

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

dictionary_check_consistency()

local res, error_message = dictionary_router_check_consistency() -- вызов на роутере
local res, error_message = dictionary_check_consistency() -- вызов на хранилище

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

  • название словаря (entity_name);

  • ключ (key);

  • значение (value).

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

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

Возвращает:

  • result (table) – структура, содержащая поля:

    • consistency (boolean) – true, если на всех узлах одинаковый хэш данных словаря;

    • hash_map (table) – справочная таблица, которая содержит перечень узлов со словарями и их хэши данных;

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

dictionary_check_key_consistency()

local res, error_message = dictionary_router_check_key_consistency(entity_name, key) -- вызов на роутере
local res, error_message = dictionary_check_key_consistency(entity_name, key) -- вызов на хранилище

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

  • название словаря (entity_name);

  • ключ (key);

  • значение (value).

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

Параметры:

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

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

Возвращает:

  • result (table) – структура, содержащая поля:

    • consistency (bool) – true, если на всех узлах одинаковый хэш данных словаря;

    • hash_map (table) – справочная таблица, содержащая перечень узлов со словарями с хэшем выбранного ключа;

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

dictionary_wait_key_consistency(entity_name, key)

local res, error_message = dictionary_router_wait_key_consistency(entity_name, key) -- вызов на роутере
local res, error_message = dictionary_wait_key_consistency(entity_name, key) -- вызов на хранилище

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

Параметры:

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

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

  • timeout (number) – время ожидания в секундах. Значение по умолчанию: 3.

Возвращает:

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

dictionary_notify_neighbors()

dictionary_router_notify_neighbors() -- вызов на роутере
dictionary_notify_neighbors() -- вызов на хранилище

Выполнить асинхронную попытку оповестить ближайший доступный экземпляр о новых данных.

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

Возвращает: нет

dictionary_try_sync()

local ok, error_message = dictionary_router_try_sync() -- вызов на роутере
local ok, error_message = dictionary_try_sync() -- вызов на хранилище

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

  • запрашивает новые данные с других экземпляров;

  • оповещает соседние экземпляры о своих новых данных.

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

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

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

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

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

Возвращает:

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

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

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