Основные сведения о блочных, добавочных и страничных BLOB-объектах
Служба хранилища предлагает три типа больших двоичных объектов, блочных, добавочных и страничных BLOB-объектов. Тип большого двоичного объекта указывается при его создании. После создания большого двоичного объекта его тип нельзя изменить, и его можно обновить только с помощью операций, подходящих для этого типа BLOB-объекта, т. е. записи блока или списка блоков в блочный BLOB-объект, добавления блоков в добавочный BLOB-объект и записи страниц в страничный BLOB-объект.
Изменения во всех больших двоичных объектах отражаются немедленно. Каждая версия большого двоичного объекта имеет уникальный тег, называемый ETag, который можно использовать вместе с условиями доступа, чтобы обеспечить изменение только конкретного экземпляра объекта.
Любой большой двоичный объект можно арендовать с монопольным правом записи. Когда объект арендован, только вызовы, включающие текущий идентификатор аренды, могут изменять большой двоичный объект или его блокировки (в случае блочного объекта).
Любой большой двоичный объект можно продублировать в моментальном снимке. Сведения о моментальных снимках см. в разделе Создание моментального снимка BLOB-объекта.
Примечание
Максимальный размер больших двоичных объектов в эмуляторе хранения Azure — 2 ГиБ.
Сведения о блочных BLOB-объектах
Блочный BLOB-объекты оптимизированы для эффективной отправки больших объемов данных. Блочные BLOB-объекты состоят из блоков, каждый из которых идентифицируется идентификатором блока. Блочный BLOB-объект может включать до 50 000 блоков. Каждый блок в блочных BLOB-объектах может иметь разный размер, вплоть до максимального размера, допустимого для используемой версии службы. Чтобы создать или изменить блочный BLOB-объект, запишите набор блоков с помощью операции Put Block ,а затем зафиксируйте блоки в большой двоичный объект с помощью операции Put Block List .
Большие двоичные объекты, размер которых меньше определенного размера (определяется версией службы), можно отправить полностью с помощью одной операции записи с помощью put BLOB-объекта.
В таблице ниже приведены сведения о максимальном размере блоков и BLOB-объектов, разрешенных определенными версиями службы.
Версия службы | Максимальный размер блока (при выполнении Put Block) | Максимальный размер BLOB-объекта (при выполнении Put Block List) | Максимальный размер BLOB-объекта при выполнении одной операции записи (Put Blob) |
---|---|---|---|
Версия 2019-12-12 и более поздние | 4000 МиБ | Около 190,7 ТиБ (4000 МиБ X 50 000 блоков) | 5000 МиБ |
Версии от 2016-05-31 до 2019-07-07 включительно | 100 МиБ | Около 4,75 ТиБ (100 МиБ X 50 000 блоков) | 256 МиБ |
Версии до 2016-05-31 | 4 МиБ | Около 195 ГиБ (4 МиБ X 50 000 блоков) | 64 МиБ |
Клиенты хранилища по умолчанию загружают один большой двоичный объект размером не более 128 МиБ, который можно задать в клиентской библиотеке службы хранилища Azure для .NET версии 11 с помощью свойства SingleBlobUploadThresholdInBytes объекта BlobRequestOptions . Если передается блочный объект с размером больше, чем указано в свойстве, то клиенты хранилища разбивают файл на блоки. Количество потоков, используемых для параллельной отправки блоков для каждого запроса, можно задать с помощью свойства ParallelOperationThreadCount объекта BlobRequestOptions .
При передаче блокировки в большой двоичный объект учетной записи хранения она связывается с указанным блочным объектом, но не становится фактической частью объекта, пока не будет зафиксирован список блокировок с идентификаторами новых блокировок. Новые блокировки остаются в незафиксированном состоянии, пока не будут явно зафиксированы или отброшены. Может быть не более 100 000 незафиксированных блоков. Запись блокировки не обновляет время последнего изменения существующего большого двоичного объекта.
Блочные большие двоичные объекты имеют функции, которые помогают в работе с большими файлами по сети. С помощью блочного большого двоичного объекта можно передавать несколько блокировок параллельно, чтобы уменьшить время передачи. Каждая блокировка может включать MD5-хэш для проверки передачи, что позволяет отслеживать ход выполнения и при необходимости повторно отправлять блокировки. Передавать блокировки можно в любом порядке и определить их последовательность на последнем этапе — этапе передачи окончательного списка блокировок. Также можно отправить новую блокировку, чтобы заменить существующую незафиксированную блокировку с тем же идентификатором. У вас есть одна неделя для фиксации блокировок в большом двоичном объекте, после этого срока они будут удалены. Все незафиксированные блокировки также удаляются, когда производится операция фиксации списка блокировок, в котором нет этих блокировок.
Можно изменить существующий блочный большой двоичный объект, вставив, заменив или удалив существующие блокировки. После загрузки изменившихся блокировок можно зафиксировать новую версию большого двоичного объекта, зафиксировав новые блокировки вместе с уже существующими в одной операции фиксации. Чтобы вставить диапазон байтов в две различные позиции зафиксированного blob-объекта, можно в рамках одной операции фиксации зафиксировать одну и ту же блокировку в два разных места. Для любой операции фиксации действует правило, что если не найдена какая-либо блокировка, то вся операция фиксации завершается с ошибкой и большой двоичный объект не модифицируется. Любое обязательство блока перезаписывает существующие свойства и метаданные BLOB-объекта и удаляет все незафиксированные блоки.
Идентификаторы блокировок — это строки равной длины, хранящиеся в большом двоичном объекте. Обычно в коде клиента используется кодирование Base-64 для приведения строк к одной длине. При использовании кодирования Base-64 исходная строка должна иметь размер 64 байта или меньше. Значения идентификаторов блокировок могут дублироваться в различных больших двоичных объектах.
Если производится запись блокировки для несуществующего большого двоичного объекта, создается новый объект размером нуль байт. Этот большой двоичный объект появится в списках объектов, содержащих незафиксированные большие двоичные объекты. Если вы не зафиксируете блок в этом BLOB-объекте, он и его незафиксированные блоки будут удалены через неделю после последней успешной отправки блока. Все незафиксированные блокировки также удаляются, когда новый большой двоичный объект с таким же именем создается за одну операцию (а не за две, как в случае передачи-фиксации блокировки).
Сведения о страничных BLOB-объектах
Страничные большие двоичные объекты — это коллекции 512-байтовых страниц, оптимизированных для операций произвольного чтения и записи. Чтобы создать страничный большой двоичный объект, следует инициализировать его и задать максимальный размер, до которого он вырастет. Чтобы добавить или обновить содержимое страничного BLOB-объекта, необходимо создать страницу или страницу, указав смещение и диапазон, которые соответствуют границам страницы в 512 байт. Запись в страничный BLOB-объект может перезаписать только одну страницу, некоторые страницы или до 4 МиБ страничного BLOB-объекта. Запись в страничный большой двоичный объект производится сразу и немедленно фиксируется в объекте. Максимальный размер страничного BLOB-объекта составляет 8 ТиБ.
Диски виртуальных машин Azure поддерживаются страничными BLOB-объектами. Azure предлагает два типа устойчивых дисковых хранилищ: "Премиум" и "Стандартный". Хранилище класса Premium для страничных BLOB-объектов предназначено для рабочих нагрузок виртуальных машин Azure, требующих постоянной высокой производительности и низкой задержки. Подробные сведения см. в разделе Твердотельные накопители (SSD) ценовой категории "Премиум" статьи Выбор типа диска для виртуальных машин IaaS. Сведения о целевых показателях масштабируемости хранилища класса Premium для страничных BLOB-объектов см. в статье Целевые показатели масштабируемости и производительности службы хранилища Azure.
Сведения о добавочных BLOB-объектах
Добавочный BLOB-объект состоит из блоков и оптимизирован для операций добавления. При изменении добавочного BLOB-объекта блоки добавляются только в конец большого двоичного объекта с помощью операции Добавления блока . Обновление или удаление существующих блоков не поддерживается. В отличие от блочного BLOB-объекта, добавочный BLOB-объект не предоставляет свои блочные идентификаторы.
Каждый блок в добавляемом BLOB-объекте может иметь разный размер до 4 МиБ, а добавочный BLOB-объект может содержать до 50 000 блоков. Поэтому максимальный размер добавочного BLOB-объекта составляет чуть более 195 ГиБ (4 МиБ x 50 000 блоков).