Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Database
  • Начало работы
    • Обзор
    • Создание базы данных
    • YQL
      • Работа с данными
      • Работа с YDB CLI
      • Работа с YDB SDK
    • Document API
      • Работа с данными
      • Работа с инструментами AWS
        • Настройка окружения
  • Пошаговые инструкции
    • Работа с YDB CLI
      • Структура и описание команд YDB CLI
      • Получение информации об объекте схемы
      • Потоковое чтение таблицы
      • Работа со вторичными индексами
    • Использование плана запроса и AST
    • Управление базами данных
    • Подключение к базе данных
    • Управление таблицами
    • Чтение и запись данных
    • Работа со вторичными индексами
  • Работа с SDK
  • Концепции
    • Обзор
    • Модель данных и схема
    • Режимы работы Serverless и Dedicated
    • Типы данных
    • Транзакции
    • Вторичные индексы
    • Time to Live (TTL)
    • Термины и определения
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
    • Обзор
    • Бессерверный режим
    • Режим с выделенными инстансами
  • Рекомендации
    • Проектирование схемы
    • Партицирование таблиц
    • Вторичные индексы
    • Постраничный вывод
    • Загрузка больших объемов данных
    • Использование таймаутов
  • YDB API и справочник
    • Ограничения базы данных
    • Обработка ошибок в API
  • HTTP API, совместимый с Amazon DynamoDB
    • Справочник API
      • Все методы
      • Actions
        • BatchGetItem
        • BatchWriteItem
        • CreateTable
        • DeleteItem
        • DeleteTable
        • DescribeTable
        • GetItem
        • ListTables
        • PutItem
        • Query
        • Scan
        • TransactGetItems
        • TransactWriteItems
        • UpdateItem
      • Общие ошибки
  • Справочник YQL
    • Обзор
    • Типы данных
      • Простые
      • Опциональные
      • Контейнеры
      • Специальные
    • Синтаксис
      • Неподдерживаемые конструкции
      • Работа с текстовым представлением типов данных
      • Выражения
      • CREATE TABLE
      • DROP TABLE
      • INSERT INTO
      • UPSERT INTO
      • REPLACE INTO
      • UPDATE
      • DELETE
      • SELECT
      • GROUP BY
      • JOIN
      • FLATTEN
      • ACTION
      • DISCARD
      • PRAGMA
      • DECLARE
      • OVER, PARTITION BY и WINDOW
    • Встроенные функции
      • Базовые
      • Агрегатные
      • Оконные
      • Для работы со списками
      • Для работы со словарями
      • Для работы с JSON
      • Для работы со структурами
      • Для работы с типами
    • Предустановленные пользовательские функции
      • HyperScan
      • Pcre
      • Pire
      • Re2
      • String
      • Unicode
      • Datetime
      • Url
      • Ip
      • Digest
      • Math
      • Histogram
    • Работа с текстовым представлением типов данных
  • Туториал YQL
    • Обзор
    • Создание таблицы
    • Добавление данных в таблицу
    • Выборка данных из всех колонок
    • Выборка данных из определенных колонок
    • Сортировка и фильтрация
    • Агрегирование данных
    • Дополнительные условия выборки
    • Объединение таблиц с помощью JOIN
    • Вставка и модификация данных с помощью REPLACE
    • Вставка и модификация данных с помощью UPSERT
    • Вставка данных с помощью INSERT
    • Обновление данных с помощью UPDATE
    • Удаление данных
    • Добавление и удаление колонок
    • Удаление таблицы
  • Обслуживание
    • Резервное копирование
  • Диагностика
    • Системные таблицы
  • Вопросы и ответы
    • Общие вопросы
    • Ошибки
    • YQL
    • Все вопросы на одной странице
  • Публичные материалы
  1. HTTP API, совместимый с Amazon DynamoDB
  2. Справочник API
  3. Actions
  4. BatchWriteItem

Метод BatchWriteItem

  • Запрос
    • Параметры
  • Ответ
    • Параметры
  • Ошибки

Записывает или удаляет элементы из таблиц.
Один вызов может записать до 16 Мб данных, что может включать до 25 запросов на размещение или удаление. Каждый элемент может иметь размер до 400 Кб.

BatchWriteItem не может обновлять элементы. Для этого используется метод UpdateItem.

Отдельно операции PutItem и DeleteItem, используемые в BatchWriteItem - атомарны. Но весь метод в целом - нет.

Если из-за недостаточной пропускной способности не обработается ни один элемент, то метод вернет ошибку ProvisionedThroughputExceededException. Если будет обработан хотя бы один элемент, то метод завершится успешно, а необработанные элементы вернутся в параметре UnprocessedItems.

Вся операция пакетной записи может быть отклонена:

  • Указанная в запросе таблица не существует.
  • Атрибуты первичного ключа, указанные в запросе, не соответствуют атрибутам в схеме первичного ключа таблицы.
  • Вы пытаетесь выполнить несколько операций с одним и тем же элементом в одном запросе.
  • Запрос содержит как минимум два элемента с одинаковыми hash- и range-ключами.
  • В пакете более 25 запросов.
  • Размер любого отдельного элемента в пакете превышает 400 Кб.
  • Общий размер запроса превышает 16 Мб.

Запрос

Запрос содержит данные в формате JSON.

{
   "RequestItems": { 
      "string" : [ 
         { 
            "DeleteRequest": { 
               "Key": { 
                  "string" : { 
                     "B": blob,
                     "BOOL": boolean,
                     "BS": [ blob ],
                     "L": [ 
                        "AttributeValue"
                     ],
                     "M": { 
                        "string" : "AttributeValue"
                     },
                     "N": "string",
                     "NS": [ "string" ],
                     "NULL": boolean,
                     "S": "string",
                     "SS": [ "string" ]
                  }
               }
            },
            "PutRequest": { 
               "Item": { 
                  "string" : { 
                     "B": blob,
                     "BOOL": boolean,
                     "BS": [ blob ],
                     "L": [ 
                        "AttributeValue"
                     ],
                     "M": { 
                        "string" : "AttributeValue"
                     },
                     "N": "string",
                     "NS": [ "string" ],
                     "NULL": boolean,
                     "S": "string",
                     "SS": [ "string" ]
                  }
               }
            }
         }
      ]
   },
   "ReturnConsumedCapacity": "string"
}

Параметры

Параметр Описание
RequestItems Ассоциативный массив таблиц и запросов к ним, которые необходимо выполнить.
Каждая запись состоит из имени таблицы и списка операций, которые необходимо выполнить (DeleteRequest или PutRequest).
  • DeleteRequest — выполнить операцию DeleteItem для указанного элемента. Удаляемый элемент идентифицируется параметром Key и вложенным элементом:
    • Key — ассоциативный массив значений атрибутов первичного ключа, которые однозначно идентифицируют элемент. Каждая запись состоит из имени и значения атрибута.
      Для каждого первичного ключа нужно указать все его ключевые атрибуты. Для простого первичного ключа нужно указать только его значение. Для составного первичного ключа нужно указать значение ключа раздела и ключа сортировки.
  • PutRequest — выполнить операцию PutItem для указанного элемента. Вставляемый элемент идентифицируется параметром Item и вложенным элементом:
    • Item — ассоциативный массив атрибутов и их значений. Каждая запись состоит из имени и значения атрибута. Значения атрибутов не должны быть нулевыми; атрибуты строкового и двоичного типов должны иметь длину больше нуля; и атрибуты типа набор не должны быть пустыми. Запросы, содержащие пустые значения, отклоняются с исключением ValidationException.
    Тип: ассоциативный массив типа WriteRequest.
    Кол-во записей: максимум 25 элементов.
    Длина ключа: 3 - 255 символов.
    Шаблон: [a-zA-Z0-9_.-]+
    Размер массива: 1 - 25 элементов.
    Обязательно: Да
ReturnConsumedCapacity Нужно ли возвращать информацию о потребляемой мощности.
  • TOTAL — возвращать информацию.
  • NONE — не возвращать информацию.

Тип: Строка
Возможные значения: TOTAL | NONE
Обязательно: Нет

Ответ

В случае успеха вернется HTTP с кодом 200.
Запрос возвращает данные в формате JSON.

{
   "ConsumedCapacity": [ 
      { 
         "CapacityUnits": number,
         "GlobalSecondaryIndexes": { 
            "string" : { 
               "CapacityUnits": number,
               "ReadCapacityUnits": number,
               "WriteCapacityUnits": number
            }
         },
         "LocalSecondaryIndexes": { 
            "string" : { 
               "CapacityUnits": number,
               "ReadCapacityUnits": number,
               "WriteCapacityUnits": number
            }
         },
         "ReadCapacityUnits": number,
         "Table": { 
            "CapacityUnits": number,
            "ReadCapacityUnits": number,
            "WriteCapacityUnits": number
         },
         "TableName": "string",
         "WriteCapacityUnits": number
      }
   ],
   "UnprocessedItems": { 
      "string" : [ 
         { 
            "DeleteRequest": { 
               "Key": { 
                  "string" : { 
                     "B": blob,
                     "BOOL": boolean,
                     "BS": [ blob ],
                     "L": [ 
                        "AttributeValue"
                     ],
                     "M": { 
                        "string" : "AttributeValue"
                     },
                     "N": "string",
                     "NS": [ "string" ],
                     "NULL": boolean,
                     "S": "string",
                     "SS": [ "string" ]
                  }
               }
            },
            "PutRequest": { 
               "Item": { 
                  "string" : { 
                     "B": blob,
                     "BOOL": boolean,
                     "BS": [ blob ],
                     "L": [ 
                        "AttributeValue"
                     ],
                     "M": { 
                        "string" : "AttributeValue"
                     },
                     "N": "string",
                     "NS": [ "string" ],
                     "NULL": boolean,
                     "S": "string",
                     "SS": [ "string" ]
                  }
               }
            }
         }
      ]
   }
}

Параметры

Параметр Описание
ConsumedCapacity Потребленные единицы мощности.
Возвращается только в том случае, если в запросе был указан параметр ReturnConsumedCapacity со значением TOTAL.
Состоит из:
  • TableName — таблица, потребляющая выделенную пропускную способность.
  • CapacityUnits — общее количество потребленных единиц мощности.

Тип: Массив объектов типа ConsumedCapacity
UnprocessedItems Ассоциативный массив таблиц и запросов к ним, которые не были обработаны. Записи приходят в том же виде, как были заданы в запросе в параметре RequestItems. Следовательно, эти значения можно повторно использовать в следующем запросе.
Если необработанных элементов не осталось, то UnprocessedItems будет пустой.

Тип: ассоциативный массив типа WriteRequest.
Кол-во записей: максимум 25 элементов.
Длина ключа: 3 - 255 символов.
Шаблон: [a-zA-Z0-9_.-]+
Размер массива: 1 - 25 элементов.

Ошибки

Параметр Описание
InternalServerError Произошла внутренняя ошибка на стороне сервера.

Код состояния HTTP: 500
ProvisionedThroughputExceededException Вы слишком часто отправляете запросы. Попробуйте увеличить интервалы между запросами.
Если таких запросов будет не слишком много, Yandex Database постарается обработать их все.

Код состояния HTTP: 400
RequestLimitExceeded Пропускная способность превышает квоту.

Код состояния HTTP: 400
ResourceNotFoundException Указанная таблица не существует.

Код состояния HTTP: 400

Также могут возникать Общие ошибки, одинаковые для всех методов.

В этой статье:
  • Запрос
  • Параметры
  • Ответ
  • Параметры
  • Ошибки
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»