Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
Вставка списка блокировок

Вставка списка блокировок

Обновлено: Апрель 2015 г.

Операция Put Block List записывает большой двоичный объект, указывая список составляющих его блочных идентификаторов. Для записи в составе большого двоичного объекта блокировка должна быть успешно записана на сервер в предыдущей операции Вставка блокировки.

Можно вызвать Put Block List, чтобы обновить большой двоичный объект путем передачи только изменившихся блокировок, затем зафиксировать новые и существующие блокировки вместе. Это можно сделать, указав, следует фиксировать блокировку из списка зафиксированных блокировок или из списка незафиксированных блокировок, либо можно зафиксировать последнюю переданную версию блокировки, к какому бы списку она ни принадлежала.

Запрос Put Block List можно составить следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем нужной учетной записи хранения.

 

  URI запроса метода PUT Версия HTTP

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

HTTP/1.1

При построении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт службы BLOB-объектов как 127.0.0.1:10000, затем укажите имя эмулированной учетной записи хранилища.

 

  URI запроса метода PUT Версия HTTP

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist

HTTP/1.1

Обратите внимание, что эмулятор хранилища поддерживает размер больших двоичных объектов до 2 ГБ.

Дополнительные сведения см. в Using the Azure Storage Emulator for Development and Testing.

В URI запроса могут быть заданы следующие дополнительные параметры.

 

Параметр Описание

timeout

Необязательно. Параметр timeout указывается в секундах. Дополнительные сведения см. в Задание времени ожидания для операций службы BLOB-объектов.

В следующей таблице перечислены обязательные и необязательные заголовки запросов.

 

Заголовок запроса Описание

Authorization

Обязательно. Указывает схему проверки подлинности, имя учетной записи и подпись. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

Date или x-ms-date

Обязательно. Задает время в формате UTC для запроса. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

x-ms-version

Требуется для запросов с проверкой подлинности. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в Управление версиями для служб хранилища Azure.

Content-Length

Обязательно. Длина содержимого запроса в байтах. Обратите внимание, что этот заголовок относится к длине содержимого списка блокировок, а не самого большого двоичного объекта.

Content-MD5

Необязательно. Хэш MD5 содержимого запроса. Этот хэш используется для проверки целостности содержимого запроса в ходе транспортировки. Если хэш не совпадает, операция завершится с ошибкой и кодом ошибки 400 (неправильный запрос).

Обратите внимание, что этот заголовок связан с содержимым запроса, а не с содержимым самого большого двоичного объекта.

x-ms-blob-cache-control

Необязательно. Задает управление кэшем большого двоичного объекта. Это свойство, если оно задано, сохраняется с большим двоичным объектом и возвращает прочитанным с запросом.

Если это свойство не указано с запросом, то оно очищается для большого двоичного объекта, если запрос успешно обработан.

x-ms-blob-content-type

Необязательно. Задает тип содержимого большого двоичного объекта. Это свойство, если оно задано, сохраняется с большим двоичным объектом и возвращает прочитанным с запросом.

Если тип содержимого не указан, то задается тип по умолчанию, т. е. application/octet-stream.

x-ms-blob-content-encoding

Необязательно. Задает кодировку содержимого большого двоичного объекта. Это свойство, если оно задано, сохраняется с большим двоичным объектом и возвращает прочитанным с запросом.

Если это свойство не указано с запросом, то оно очищается для большого двоичного объекта, если запрос успешно обработан.

x-ms-blob-content-language

Необязательно. Задайте язык содержимого большого двоичного объекта. Это свойство, если оно задано, сохраняется с большим двоичным объектом и возвращает прочитанным с запросом.

Если это свойство не указано с запросом, то оно очищается для большого двоичного объекта, если запрос выполнен успешно.

x-ms-blob-content-md5

Необязательно. Хэш MD5 содержимого большого двоичного объекта. Обратите внимание, что этот хэш не проверяется, поскольку хэш отдельных блокировок проверялся при передаче каждого из них.

Операция Получение большого двоичного объекта возвращает значение этого заголовка в заголовке ответа Content-MD5.

Если это свойство не указано с запросом, то оно очищается для большого двоичного объекта, если запрос успешно обработан.

x-ms-meta-name:value

Необязательно. Определяемые пользователем пары «имя-значение», связанные с большим двоичным объектом.

Обратите внимание: начиная с версии 2009-09-19, имена метаданных должны соответствовать правилам именования для идентификаторов C#.

x-ms-lease-id:<ID>

Требуется, если у большого двоичного объекта имеется активная аренда. Для выполнения этой операции в большом двоичном объекте с активной арендой укажите допустимый идентификатор аренды для этого заголовка.

x-ms-client-request-id

Необязательно. Предоставляет сформированное клиентом непрозрачное значение с ограничением в 1 КБ, которое записывается в журналы аналитики, когда включено ведение журналов аналитики хранилища. Этот заголовок настоятельно рекомендуется использовать для соотнесения действий, выполняемых на стороне клиента, с запросами, получаемыми сервером. Дополнительные сведения см. в разделах Сведения о ведении журнала службы аналитики хранилища и Ведение журналов в Windows Azure: использование журналов для отслеживания запросов к хранилищу.

x-ms-blob-content-disposition

Необязательно. Задает заголовок Content-Disposition большого двоичного объекта. Доступно в версии 2013-08-15 и выше.

Поле заголовка ответа Content-Disposition предоставляет дополнительные сведения о том, как обрабатывать полезные данные ответа, а также может использоваться для присоединения дополнительных метаданных. Например, если задано значение attachment, агент пользователя не покажет ответ, а выведет на экран диалоговое окно «Сохранить как».

Ответ от операций Получение большого двоичного объекта и Получение свойств больших двоичных объектов содержит заголовок content-disposition.

Эта операция также поддерживает использование условных заголовков только для фиксации списка блокировок и только в случае, если выполняются указанные условия. Дополнительные сведения см. в Указание условных заголовков для операций службы BLOB-объектов.

В тексте запроса можно указать, по какому списку блокировок служба BLOB-объектов должна проверять запрошенную блокировку. Таким образом можно обновить существующие большие двоичные объекты путем вставки, замены или удаления отдельных блокировок вместо повторной передачи всего большого двоичного объекта целиком. После того как вы передали измененные блокировки, можно зафиксировать новую версию большого двоичного объекта путем фиксации новых блокировок вместе с существующими, которые нужно сохранить.

Чтобы обновить большой двоичный объект, можно указать, что служба должна искать идентификатор блокировки в списке зафиксированных блокировок, в списке незафиксированных блокировок либо в сначала в списке незафиксированных, а затем в списке зафиксированных блокировок. Чтобы указать используемый способ, задайте идентификатор блокировки в соответствующем XML-элемент в тексте запроса следующим образом.

  • Укажите идентификатор блокировки в элементе Committed, чтобы указать, что служба BLOB-объектов должна выполнять поиск названной блокировки только в списке зафиксированных блокировок. Если блокировка не найдена в списке зафиксированных блокировок, то она не будет записана в составе большого двоичного объекта, а служба BLOB-объектов вернет код состояния 400 (неправильный запрос).

  • Укажите идентификатор блокировки в элементе Uncommitted, чтобы указать, что служба BLOB-объектов должна выполнять поиск названной блокировки только в списке незафиксированных блокировок. Если блокировка не найдена в списке незафиксированных блокировок, то она не будет записана в составе большого двоичного объекта, а служба BLOB-объектов вернет код состояния 400 (неправильный запрос).

  • Укажите идентификатор блокировки в элементе Latest, чтобы указать, что служба BLOB-объектов должна выполнить поиск сначала в списке незафиксированных блокировок. Если блокировка найдена в списке незафиксированных, ее версия является последней и должна быть записана в большой двоичный объект. Если блокировка не найдена в списке незафиксированных блокировок, то служба должна выполнить поиск названной блокировки в списке зафиксированных блокировок и записать эту блокировку в большой двоичный объект, если блокировка найдена.

Текст запроса для этой версии Put Block List использует следующий формат XML:

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Committed>first-base64-encoded-block-id</Committed>
  <Uncommitted>second-base64-encoded-block-id</Uncommitted>
  <Latest>third-base64-encoded-block-id</Latest>
  ...
</BlockList>

Чтобы продемонстрировать Put Block List, предположим, что было передано три блокировки, которые теперь необходимо зафиксировать. В следующем примере новый большой двоичный объект фиксируется путем указания того, что должна использоваться последняя версия каждой блокировки в списке. Не нужно знать, зафиксированы ли уже эти блокировки на данный момент.


Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist HTTP/1.1

Request Headers:
x-ms-date: Wed, 31 Aug 2011 00:17:43 GMT
x-ms-version: 2011-08-18
Content-Type: text/plain; charset=UTF-8
Authorization: SharedKey myaccount:DJ5QZSVONZ64vAhnN/wxcU+Pt5HQSLAiLITlAU76Lx8=
Content-Length: 133

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Latest>AAAAAA==</Latest>
  <Latest>AQAAAA==</Latest>
  <Latest>AZAAAA==</Latest>
</BlockList>

Далее, предположим, что большой двоичный объект нужно обновить. В новом большом двоичном объекте будут следующие изменения.

  • Новая блокировка с идентификатором ANAAAA==. Этот блок необходимо сначала передать вызовом Вставка блокировки, тогда он появится в списке незафиксированных блокировок до тех пор, пока не произойдет вызов Put Block List.

  • Обновленная версия блокировки с идентификатором AZAAAA==. Этот блок необходимо сначала передать вызовом Вставка блокировки, тогда он появится в списке незафиксированных блокировок до тех пор, пока не произойдет вызов Put Block List.

  • Удаление блокировки с идентификатором AAAAAA==. Если эта блокировка не включена в следующий вызов Put Block List, она в итоге будет удалена из большого двоичного объекта.

В следующем примере показан вызов Put Block List, обновляющий большой двоичный объект.


Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist HTTP/1.1

Request Headers:
x-ms-date: Wed, 31 Aug 2009 00:17:43 GMT
x-ms-version: 2011-08-18
Content-Type: text/plain; charset=UTF-8
Authorization: SharedKey myaccount:DJ5QZSVONZ64vAhnN/wxcU+Pt5HQSLAiLITlAU76Lx8=
Content-Length: 133

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Uncommitted>ANAAAA==</Uncommitted>
  <Committed>AQAAAA==</Committed>
  <Uncommitted>AZAAAA==</Uncommitted>
</BlockList>

Ответ включает код состояния HTTP и набор заголовков ответа.

Успешная операция возвращает код состояния 201 (создано).

Сведения о кодах состояния см. в разделе Коды состояний и ошибок.

Ответ для этой операции включает следующие заголовки. Ответ может также включать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют Спецификации протокола HTTP/1.1.

 

Ответ Описания

ETag

Тег сущности содержит значение, которое клиент может использовать для выполнения условных операций GET/PUT с помощью заголовка запроса If-Match. Если версия запроса 2011-08-18 или более поздняя, то значение ETag будет указано в кавычках.

Last-Modified

Дата и время последнего изменения BLOB-объекта. Дата в формате согласно RFC 1123. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках.

Любая операция, которая изменяет BLOB-объект, в том числе обновление метаданных или свойств BLOB-объекта, изменяет время последнего изменения BLOB-объекта.

Content-MD5

Этот заголовок возвращается для того, чтобы клиент мог проверить целостность содержимого сообщения. Этот заголовок относится к содержимому запроса. В данном случае это означает список блокировок, а не содержимое самого большого двоичного объекта.

x-ms-request-id

Этот заголовок однозначно определяет выполненный запрос, его также можно использовать для устранения связанных с запросом неполадок. Дополнительные сведения см. в Устранение неполадок при API-операциях.

x-ms-version

Указывает версию службы BLOB-объектов, используемую для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.

Date

Значение даты и времени в формате UTC, сформированное службой и указывающее время, когда был инициирован ответ.

Response Status:
HTTP/1.1 201 Created

Response Headers:
Transfer-Encoding: chunked
Content-MD5: oafL1+HS78x65+e39PGIIg==
Date: Sun, 25 Sep 2011 00:17:44 GMT
ETag: “0x8CB172A360EC34B”
Last-Modified: Sun, 25 Sep 2011 00:17:43 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

Эта операция может быть отменена владельцем учетной записи и любым обладателем подписи общего доступа с разрешениями на запись для этого большого двоичного объекта или контейнера.

Операция Put Block List предписывает порядок, в котором будут сочетаться блокировки, составляющие большой двоичный объект.

Один идентификатор блокировки можно указать несколько раз в списке блокировок. Если идентификатор блокировки указан несколько раз, он представляет диапазон байтов в каждом из расположений в списке блокировок для итогового зафиксированного большого двоичного объекта. Если идентификатор блокировки встречается в списке несколько раз, оба экземпляра идентификатора блокировки должны быть указаны в одном списке блокировок. Другими словами, оба экземпляра должны быть указаны элементе Committed, элементе Uncommitted или элементе Latest.

С помощью Put Block Listможно изменять существующие большие двоичные объекты, вставляя, обновляя или удаляя отдельные блокировки без повторной передачи всего большого двоичного объекта целиком. Можно указывать идентификаторы блокировок и из текущего списка зафиксированных блокировок и из списка незафиксированных блокировок для создания нового большого двоичного объекта или обновления содержимого существующего объекта. Таким образом можно обновить большой двоичный объект, указав новые блокировки из списка незафиксированных блокировок, а остальные из списка зафиксированных блокировок, которые уже входят в состав существующего большого двоичного объекта.

Если идентификатор блокировки указан в элементе Latest и один идентификатор блокировки есть в списке как зафиксированных, так и незафиксированных блокировок, операция Put Block List фиксирует блокировку из списка незафиксированных блокировок. Если идентификатор блокировки есть в списке зафиксированных блокировок, но отсутствует в списке незафиксированных, то операция Put Block List фиксирует блокировку из списка зафиксированных блокировок.

Максимальное количество блокировок, которые могут быть зафиксированы, составляет 50 000, максимальный размер большого двоичного объекта, который может быть зафиксирован с помощью операции Put Block List, составляет 200 ГБ. Если попытаться зафиксировать более 50 000 блокировок, то служба возвращает код состояния 413 (слишком большая сущность запроса). Служба также возвращает дополнительные сведения об ошибке в ответе, в том числе максимально допустимое количество блокировок.

Максимальное количество незафиксированных блокировок, которые могут быть связаны с большим двоичным объектом, составляет 100 000, а максимальный размер списка незафиксированных блокировок — 400 ГБ.

При вызове Put Block List для обновления существующего большого двоичного объекта имеющиеся свойства и метаданные объекта перезаписываются. Однако все существующие моментальные снимки сохраняются с объектом. Можно использовать условные заголовки запросов для выполнения операции только при выполнении определенного условия.

Если операция Put Block List завершается с ошибкой из-за отсутствия блокировки, ее придется передать.

Все незафиксированные блокировки будут собраны как мусор, если нет успешных вызовов Put Block или Put Block List для большого двоичного объекта в течение недели после последнего успешного выполнения операции Put Block. Если для большого двоичного объекта вызывается операция Вставка большого двоичного объекта, то все незафиксированные блокировки будут собраны как мусор.

Если большой двоичный объект имеет активную аренду, то клиент должен указать в запросе идентификатор аренды для фиксации списка блокировок. Если клиент не указывает идентификатор аренды или указывает недопустимый идентификатор аренды, то служба BLOB-объектов возвращает код состояния 412 (не выполнено необходимое условие). Если клиент указывает идентификатор аренды, но большой двоичный объект не имеет активной аренды, то служба BLOB-объектов также возвращает код состояния 412 (не выполнено необходимое условие). Если клиент указывает идентификатор аренды для большого двоичного объекта, который еще не существует, служба BLOB-объектов возвратит код состояния 412 (необходимое условие не выполнено) для запросов, сделанных к 2013-08-15 и последующей версии. Для предыдущих же версий службы BLOB-объектов возвращается код состояния 201 (создано).

Если большой двоичный объект имеет активную аренду и вы вызываете Put Block List для обновления большого двоичного объекта, то аренда сохраняется для переданного большого двоичного объекта.

Put Block List относится только к блочным BLOB-объектам. Вызов Put Block List для страничного BLOB-объекта вызывает код состояния 400 (неправильный запрос).

Показ:
© 2015 Microsoft