Noções básicas sobre blobs de blocos, blobs de acréscimo e blobs de página

O serviço de armazenamento oferece três tipos de blobs, blobs de blocos, blobs de acréscimo e blobs de páginas. Você especifica o tipo de blob quando cria o blob. Depois que o blob tiver sido criado, seu tipo não poderá ser alterado e só poderá ser atualizado usando operações apropriadas para esse tipo de blob , ou seja, gravando um bloco ou uma lista de blocos em um blob de blocos, acrescentando blocos a um blob de acréscimo e gravando páginas em um blob de páginas.

Todos os blobs refletem as alterações confirmadas imediatamente. Cada versão do blob tem uma marca exclusiva, chamada ETag, que pode ser usada com condições de acesso para garantir que você altere apenas uma instância específica do blob.

Qualquer blob pode ser concedido para acesso de gravação exclusivo. Quando um blob é concedido, somente as chamadas que incluem a ID de concessão atual podem modificar o blob ou (para blobs de bloco) seus blocos.

Qualquer blob pode ser duplicado em um instantâneo. Para obter informações sobre instantâneos, consulte Criando um instantâneo de um blob.

Observação

Os blobs no emulador de armazenamento do Azure são limitados a um tamanho máximo de 2 GiB.

Sobre blobs de blocos

Os blobs de blocos são otimizados para carregar grandes quantidades de dados de forma eficiente. Os blobs de blocos são compostos por blocos, cada um dos quais é identificado por uma ID de bloco. Um blob de blocos pode incluir até 50.000 blocos. Cada bloco em um blob de blocos pode ter um tamanho diferente, até o tamanho máximo permitido para a versão do serviço em uso. Para criar ou modificar um blob de blocos, escreva um conjunto de blocos por meio da operação Put Block e confirme os blocos em um blob com a operação Put Block List .

Blobs com menos de um determinado tamanho (determinado pela versão do serviço) podem ser carregados em sua totalidade com uma única operação de gravação por meio de Colocar Blob.

A tabela a seguir descreve os tamanhos máximos de bloco e de blob permitidos pela versão do serviço.

Versão do serviço Tamanho máximo do bloco (via Colocar Bloco) Tamanho máximo do blob (via Colocar Lista de Bloco) Tamanho máximo do blob via operação de gravação única (via Colocar Blob)
Versão 12/12/2019 e posterior 4000 MiB Aproximadamente 190,7 TiB (4000 MiB X 50.000 blocos) 5000 MiB
Versão 31/05/2016 até a versão 07/07/2019 100 MiB Aproximadamente 4,75 TiB (100 MiB X 50.000 blocos) 256 MiB
Versões anteriores a 31/05/2016 4 MiB Aproximadamente 195 GiB (4 MiB X 50.000 blocos) (versão prévia) 64 MiB

Os clientes de armazenamento usam como padrão um upload de blob único máximo de 128 MiB, configurável na biblioteca de clientes do Armazenamento do Azure para .NET versão 11 usando a propriedade SingleBlobUploadThresholdInBytes do objeto BlobRequestOptions . Quando um carregamento de blob de bloco for maior que o valor nessa propriedade, os clientes de armazenamento dividirão o arquivo em blocos. Você pode definir o número de threads usados para carregar os blocos em paralelo por solicitação usando a propriedade ParallelOperationThreadCount do objeto BlobRequestOptions .

Ao carregar um bloco em um blob na sua conta de armazenamento, ele é associado ao blob de bloco especificado, mas não se torna parte do blob até que você confirme uma lista de blocos que inclua a nova ID do bloco. Os novos blocos permanecem em um estado não confirmado até que sejam especificamente confirmados ou descartados. Pode haver no máximo 100.000 blocos não confirmados. A gravação de um bloco não atualiza a hora em que um blob existente foi modificado pela última vez.

Os blobs de bloco incluem recursos que ajudam a gerenciar arquivos grandes pelas redes. Com um blob de bloco, é possível carregar vários blocos paralelamente para diminuir o tempo de carregamento. Cada bloco pode incluir um hash MD5 para verificar a transferência, de modo que seja possível rastrear o progresso do carregamento e reenviar os blocos se necessário. Você pode carregar blocos em qualquer ordem e determinar a sequência na etapa de confirmação da lista de blocos final. Também é possível carregar um novo bloco para substituir um bloco não confirmado existente da mesma ID de bloco. Você tem uma semana para confirmar blocos em um blob antes de eles serem descartados. Todos os blocos não confirmados também são descartados quando uma operação de confirmação da lista de blocos ocorre, mas não os inclui.

Você pode modificar um blob de bloco existente inserindo, substituindo ou excluindo blocos existentes. Após carregar os blocos que foram alterados, é possível confirmar uma nova versão do blob ao confirmar os novos blocos com os blocos existentes que deseja manter usando uma única operação de confirmação. Para inserir o mesmo intervalo de bytes em dois locais diferentes do blob confirmado, você pode confirmar o mesmo bloco em dois lugares na mesma operação de confirmação. Para qualquer operação de confirmação, se algum bloco não for encontrado, a operação de confirmação inteira falhará com um erro e o blob não será modificado. Qualquer compromisso de bloco substitui as propriedades e metadados existentes do blob e descarta todos os blocos não confirmados.

As IDs de bloco são cadeias de caracteres de comprimento igual em um blob. O código de cliente do bloco geralmente usa a codificação de base 64 para padronizar cadeias de caracteres em tamanhos iguais. Ao usar a codificação de base 64, a cadeia de caracteres pré-codificada deve ter 64 bytes ou menos. Os valores da ID de bloco podem ser duplicados em blobs diferentes.

Se você gravar um bloco para um blob que não existe, um novo blob de bloco será criado, com um comprimento de zero bytes. Esse blob aparecerá em listas de blobs que incluem blobs não confirmados. Se você não confirmar nenhum bloco para esse blob, ele e seus blocos não confirmados serão descartados uma semana após o último upload de bloco bem-sucedido. Todos os blocos não confirmados também são descartados quando um novo blob com o mesmo nome é criado usando uma única etapa (em vez do carregamento de bloco em duas etapas e depois o processo de confirmação).

Sobre blobs de páginas

Blobs de página são uma coleção de páginas de 512 bytes otimizadas para leitura aleatória e operações de gravação. Para criar um blob de página, inicialize-o e especifique o tamanho máximo que ele terá. Para adicionar ou atualizar o conteúdo de um blob de páginas, você escreve uma página ou páginas especificando um deslocamento e um intervalo que se alinham aos limites de página de 512 bytes. Uma gravação em um blob de páginas pode substituir apenas uma página, algumas páginas ou até 4 MiB do blob de páginas. As gravações nos blobs de página acontecem in-loco e são imediatamente confirmadas no blob. O tamanho máximo de um blob de páginas é de 8 TiB.

Os discos de máquina virtual do Azure são apoiados por blobs de páginas. O Azure oferece dois tipos de armazenamento em disco durável: premium e standard. O armazenamento Premium para blobs de páginas foi projetado para cargas de trabalho de máquina virtual do Azure que exigem alto desempenho consistente e baixa latência. Para obter informações detalhadas, consulte a seção SSD (unidades de estado sólido) Premium do artigo Selecionar um tipo de disco para VMs IaaS. Para obter informações sobre as metas de escalabilidade para armazenamento premium para blobs de páginas, consulte Metas de desempenho e escalabilidade do Armazenamento do Azure.

Sobre blobs de acréscimo

Um blob de acréscimo é composto por blocos e é otimizado para operações de acréscimo. Quando você modifica um blob de acréscimo, os blocos são adicionados somente ao final do blob por meio da operação Acrescentar Bloco . Não há suporte para atualização ou exclusão de blocos existentes. Ao contrário de um blob de blocos, um blob de acréscimo não expõe suas IDs de bloco.

Cada bloco em um blob de acréscimo pode ter um tamanho diferente, até um máximo de 4 MiB, e um blob de acréscimo pode incluir até 50.000 blocos. O tamanho máximo de um blob de acréscimo é, portanto, um pouco mais de 195 GiB (4 MiB X 50.000 blocos).

Consulte Também