Параметры запросов

В данном разделе собрана информация о дополнительных параметрах запросов. Подробнее о командах читайте в разделе Команды.

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

Ниже представлен список команд, для которых можно указать условия успешного выполнения:

  • set
  • remove
  • create
  • lock
  • copy
  • move
  • link

Условия бывают двух видов:

  • prerequisite_revisions — набор указаний вида path, transaction_id, revision. Запрос будет выполнен, только если все указанные пути с учетом заданных транзакций существуют, а ревизии соответствуют указанным;
  • prerequisite_transactions — список транзакций, которые обязаны существовать на момент выполнения запроса.

Пример:

revision = client.get("//tmp/my_table/@revision")
#... some calculations ...
revision_parameter = yt.create_revision_parameter(path="//tmp/my_table", revision=revision)
revision_client = yt.create_client_with_command_params(prerequisite_revisions=[revision_parameter])
revision_client.move("//tmp/transformed_table", "//tmp/my_table")

Источник данных для чтения

В немутирующих запросах к Кипарису можно указать источник данных для чтения при помощи параметра read_from.

Популярным значением параметра read_from является cache. В таком случае чтение ответа будет происходить из кеша (который обычно расположен на выделенных машинах кластера), что позволяет снизить нагрузку на мастер-сервер. Это важно при выполнении большого количества тяжелых запросов к Кипарису, например когда необходимо обойти большое поддерево.

Пример:

for obj in client.search("//tmp/my_table", read_from="cache"):
    if "abc" in str(obj):
        ...

Другие настройки кеширования

При использовании описанного выше параметра read_from со значением cache есть возможность управлять некоторыми аспектами кеширования.

Внимание

Без веской необходимости и рекомендации администраторов не следует использовать эти параметры. Неправильно подобранные значения могут оказать негативное влияние как на пользователя, инициирующего запросы, так и на других пользователей и даже привести к деградации всего сервиса.
  • disable_per_user_cache — исключить имя пользователя из ключа кеширования;
  • expire_after_successful_update_time — время жизни записи в кеше после того, как она была создана (или обновлена) в результате успешного исполнения запроса;
  • expire_after_failed_update_time — время жизни записи в кеше после того, как она была создана (или обновлена) в результате неуспешного исполнения запроса (например, после попытки чтения несуществующего узла);
  • cache_sticky_group_size — количество машин, среди которых случайным образом будет выбрана та, на которую будет отправлен запрос; параметр позволяет балансировать нагрузку между несколькими кешами;
  • success_staleness_bound — если не ноль, кешу разрешается возвращать успешные ответы, устаревшие не более чем на указанное время; параметр позволяет получать ответы из кеша, не блокируясь на его обновлении.
Предыдущая
Следующая