Controle de versão de BLOBBlob versioning

Você pode habilitar o controle de versão do armazenamento de BLOBs para manter automaticamente as versões anteriores de um objeto.You can enable Blob storage versioning to automatically maintain previous versions of an object. Quando o controle de versão de blob estiver habilitado, você poderá restaurar uma versão anterior de um blob para recuperar seus dados se eles forem modificados ou excluídos erroneamente.When blob versioning is enabled, you can restore an earlier version of a blob to recover your data if it is erroneously modified or deleted.

O controle de versão de blob está habilitado na conta de armazenamento e se aplica a todos os BLOBs na conta de armazenamento.Blob versioning is enabled on the storage account and applies to all blobs in the storage account. Depois de habilitar o controle de versão de BLOB para uma conta de armazenamento, o armazenamento do Azure mantém automaticamente as versões para cada blob na conta de armazenamento.After you enable blob versioning for a storage account, Azure Storage automatically maintains versions for every blob in the storage account.

A Microsoft recomenda usar o controle de versão de BLOB para manter versões anteriores de um blob para proteção de dados superior.Microsoft recommends using blob versioning to maintain previous versions of a blob for superior data protection. Quando possível, use o controle de versão de BLOB em vez de instantâneos de BLOB para manter as versões anteriores.When possible, use blob versioning instead of blob snapshots to maintain previous versions. Os instantâneos de blob fornecem funcionalidade semelhante, pois mantêm versões anteriores de um blob, mas os instantâneos devem ser mantidos manualmente pelo seu aplicativo.Blob snapshots provide similar functionality in that they maintain earlier versions of a blob, but snapshots must be maintained manually by your application.

Para saber como habilitar o controle de versão de BLOB, consulte habilitar e gerenciar o controle de versão de blob.To learn how to enable blob versioning, see Enable and manage blob versioning.

Importante

O controle de versão de BLOB não pode ajudá-lo a se recuperar da exclusão acidental de uma conta de armazenamento ou contêiner.Blob versioning cannot help you to recover from the accidental deletion of a storage account or container. Para evitar a exclusão acidental da conta de armazenamento, configure um bloqueio CannotDelete no recurso de conta de armazenamento.To prevent accidental deletion of the storage account, configure a CannotDelete lock on the storage account resource. Para obter mais informações sobre como bloquear recursos do Azure, consulte Bloquear recursos para evitar alterações inesperadas.For more information on locking Azure resources, see Lock resources to prevent unexpected changes.

Observação

Esse recurso ainda não tem suporte em contas que têm um namespace hierárquico (Azure Data Lake Storage Gen2).This feature is not yet supported in accounts that have a hierarchical namespace (Azure Data Lake Storage Gen2). Para saber mais, confira recursos de armazenamento de BLOBs disponíveis em Azure data Lake Storage Gen2.To learn more, see Blob storage features available in Azure Data Lake Storage Gen2.

Como funciona o controle de versão de BLOBHow blob versioning works

Uma versão captura o estado de um blob em um determinado ponto no tempo.A version captures the state of a blob at a given point in time. Quando o controle de versão do blob está habilitado para uma conta de armazenamento, o armazenamento do Azure cria automaticamente uma nova versão de um blob cada vez que o blob é modificado ou excluído.When blob versioning is enabled for a storage account, Azure Storage automatically creates a new version of a blob each time that blob is modified or deleted.

Quando você cria um blob com o controle de versão habilitado, o novo BLOB é a versão atual do blob (ou o blob de base).When you create a blob with versioning enabled, the new blob is the current version of the blob (or the base blob). Se você Modificar posteriormente esse BLOB, o armazenamento do Azure criará uma versão que captura o estado do blob antes de ser modificado.If you subsequently modify that blob, Azure Storage creates a version that captures the state of the blob before it was modified. O blob modificado torna-se a nova versão atual.The modified blob becomes the new current version. Uma nova versão é criada cada vez que você modifica o blob.A new version is created each time you modify the blob.

Ter um grande número de versões por blob pode aumentar a latência para operações de listagem de BLOBs.Having a large number of versions per blob can increase the latency for blob listing operations. A Microsoft recomenda a manutenção de menos de 1000 versões por blob.Microsoft recommends maintaining fewer than 1000 versions per blob. Você pode usar o gerenciamento do ciclo de vida para excluir automaticamente versões antigas.You can use lifecycle management to automatically delete old versions. Para obter mais informações sobre o gerenciamento do ciclo de vida, consulte otimizar custos automatizando as camadas de acesso do armazenamento de BLOBs do Azure.For more information about lifecycle management, see Optimize costs by automating Azure Blob Storage access tiers.

Quando você exclui um blob com o controle de versão habilitado, o armazenamento do Azure cria uma versão que captura o estado do blob antes de ele ser excluído.When you delete a blob with versioning enabled, Azure Storage creates a version that captures the state of the blob before it was deleted. A versão atual do blob é excluída, mas as versões do blob persistem, para que possam ser recriadas se necessário.The current version of the blob is then deleted, but the blob's versions persist, so that it can be re-created if needed.

As versões de blob são imutáveis.Blob versions are immutable. Você não pode modificar o conteúdo ou os metadados de uma versão de blob existente.You cannot modify the content or metadata of an existing blob version.

O controle de versão de blob está disponível para contas de armazenamento de BLOBs v2, BLOB de blocos e de uso geral.Blob versioning is available for general-purpose v2, block blob, and Blob storage accounts. As contas de armazenamento com um namespace hierárquico habilitado para uso com Azure Data Lake Storage Gen2 não têm suporte no momento.Storage accounts with a hierarchical namespace enabled for use with Azure Data Lake Storage Gen2 are not currently supported.

A versão 2019-10-10 e superior da API REST do armazenamento do Azure dá suporte ao controle de versão de BLOB.Version 2019-10-10 and higher of the Azure Storage REST API supports blob versioning.

ID da versãoVersion ID

Cada versão de blob é identificada por uma ID de versão.Each blob version is identified by a version ID. O valor da ID de versão é o carimbo de data/hora em que o blob foi gravado ou atualizado.The value of the version ID is the timestamp at which the blob was written or updated. A ID da versão é atribuída no momento em que a versão é criada.The version ID is assigned at the time that the version is created.

Você pode executar operações de leitura ou exclusão em uma versão específica de um blob fornecendo sua ID de versão.You can perform read or delete operations on a specific version of a blob by providing its version ID. Se você omitir a ID da versão, a operação agirá em relação à versão atual (o blob de base).If you omit the version ID, the operation acts against the current version (the base blob).

Quando você chama uma operação de gravação para criar ou modificar um blob, o armazenamento do Azure retorna o cabeçalho x-MS-Version-ID na resposta.When you call a write operation to create or modify a blob, Azure Storage returns the x-ms-version-id header in the response. Esse cabeçalho contém a ID da versão atual do blob que foi criado pela operação de gravação.This header contains the version ID for the current version of the blob that was created by the write operation.

A ID da versão permanece a mesma durante o tempo de vida da versão.The version ID remains the same for the lifetime of the version.

Controle de versão em operações de gravaçãoVersioning on write operations

Quando o controle de versão do blob é ativado, cada operação de gravação em um blob cria uma nova versão.When blob versioning is turned on, each write operation to a blob creates a new version. As operações de gravação incluem colocar blob, colocar lista de blocos, copiar blobe definir metadados de blob.Write operations include Put Blob, Put Block List, Copy Blob, and Set Blob Metadata.

Se a operação de gravação criar um novo BLOB, o blob resultante será a versão atual do blob.If the write operation creates a new blob, then the resulting blob is the current version of the blob. Se a operação de gravação modificar um blob existente, os novos dados serão capturados no blob atualizado, que é a versão atual, e o armazenamento do Azure criará uma versão que salva o estado anterior do blob.If the write operation modifies an existing blob, then the new data is captured in the updated blob, which is the current version, and Azure Storage creates a version that saves the blob's previous state.

Para simplificar, os diagramas mostrados neste artigo exibem a ID da versão como um valor inteiro simples.For simplicity, the diagrams shown in this article display the version ID as a simple integer value. Na realidade, a ID da versão é um carimbo de data/hora.In reality, the version ID is a timestamp. A versão atual é mostrada em azul e as versões anteriores são mostradas em cinza.The current version is shown in blue, and previous versions are shown in gray.

O diagrama a seguir mostra como as operações de gravação afetam as versões de BLOB.The following diagram shows how write operations affect blob versions. Quando um blob é criado, esse blob é a versão atual.When a blob is created, that blob is the current version. Quando o mesmo blob é modificado, uma nova versão é criada para salvar o estado anterior do blob e o blob atualizado se torna a versão atual.When the same blob is modified, a new version is created to save the blob's previous state, and the updated blob becomes the current version.

Diagrama mostrando como as operações de gravação afetam os BLOBs com versão.

Observação

Um blob que foi criado antes do controle de versão habilitado para a conta de armazenamento não tem uma ID de versão.A blob that was created prior to versioning being enabled for the storage account does not have a version ID. Quando esse blob é modificado, o blob modificado torna-se a versão atual e uma versão é criada para salvar o estado do blob antes da atualização.When that blob is modified, the modified blob becomes the current version, and a version is created to save the blob's state before the update. A versão recebe uma ID de versão que é sua hora de criação.The version is assigned a version ID that is its creation time.

Controle de versão em operações de exclusãoVersioning on delete operations

Quando você exclui um blob, a versão atual do blob torna-se uma versão anterior e o blob de base é excluído.When you delete a blob, the current version of the blob becomes a previous version, and the base blob is deleted. Todas as versões anteriores do blob são preservadas quando o blob é excluído.All existing previous versions of the blob are preserved when the blob is deleted.

Chamar a operação excluir blob sem uma ID de versão exclui o blob de base.Calling the Delete Blob operation without a version ID deletes the base blob. Para excluir uma versão específica, forneça a ID dessa versão na operação de exclusão.To delete a specific version, provide the ID for that version on the delete operation.

O diagrama a seguir mostra o efeito de uma operação de exclusão em um blob com versão:The following diagram shows the effect of a delete operation on a versioned blob:

Diagrama mostrando a exclusão de blob com versão.

Gravar novos dados no blob cria uma nova versão do blob.Writing new data to the blob creates a new version of the blob. As versões existentes não são afetadas, conforme mostrado no diagrama a seguir.Any existing versions are unaffected, as shown in the following diagram.

Diagrama mostrando a recriação de blob com versão após a exclusão.

Tipos de blobsBlob types

Quando o controle de versão de blob está habilitado para uma conta de armazenamento, todas as operações de gravação e exclusão em blobs de bloco disparam a criação de uma nova versão, com exceção da operação Put Block .When blob versioning is enabled for a storage account, all write and delete operations on block blobs trigger the creation of a new version, with the exception of the Put Block operation.

Para BLOBs de páginas e blobs de acréscimo, apenas um subconjunto de operações de gravação e exclusão aciona a criação de uma versão.For page blobs and append blobs, only a subset of write and delete operations trigger the creation of a version. Essas operações incluem:These operations include:

As operações a seguir não disparam a criação de uma nova versão.The following operations do not trigger the creation of a new version. Para capturar alterações dessas operações, faça um instantâneo manual:To capture changes from those operations, take a manual snapshot:

Todas as versões de um blob devem ser do mesmo tipo de BLOB.All versions of a blob must be of the same blob type. Se um blob tiver versões anteriores, você não poderá substituir um blob de um tipo por outro tipo, a menos que exclua primeiro o blob e todas as suas versões.If a blob has previous versions, you cannot overwrite a blob of one type with another type unless you first delete the blob and all its versions.

Níveis de acessoAccess tiers

Você pode mover qualquer versão de um blob de blocos, incluindo a versão atual, para uma camada de acesso de blob diferente chamando a operação definir camada de blob .You can move any version of a block blob, including the current version, to a different blob access tier by calling the Set Blob Tier operation. Você pode aproveitar os preços de capacidade mais baixa movendo versões mais antigas de um blob para a camada fria ou de arquivo morto.You can take advantage of lower capacity pricing by moving older versions of a blob to the cool or archive tier. Para obter mais informações, consulte armazenamento de BLOBs do Azure: camadas de acesso quentes, frias e de arquivo.For more information, see Azure Blob storage: hot, cool, and archive access tiers.

Para automatizar o processo de mover BLOBs de blocos para a camada apropriada, use o gerenciamento do ciclo de vida do blob.To automate the process of moving block blobs to the appropriate tier, use blob life cycle management. Para obter mais informações sobre o gerenciamento do ciclo de vida, consulte gerenciar o ciclo de vida do armazenamento de BLOBs do Azure.For more information on life cycle management, see Manage the Azure Blob storage life cycle.

Habilitar ou desabilitar o controle de versão de BLOBEnable or disable blob versioning

Para saber como habilitar ou desabilitar o controle de versão de BLOB, consulte habilitar e gerenciar o controle de versão de blob.To learn how to enable or disable blob versioning, see Enable and manage blob versioning.

Desabilitar o controle de versão de BLOB não exclui BLOBs, versões ou instantâneos existentes.Disabling blob versioning does not delete existing blobs, versions, or snapshots. Quando você desativa o controle de versão de BLOB, todas as versões existentes permanecem acessíveis em sua conta de armazenamento.When you turn off blob versioning, any existing versions remain accessible in your storage account. Nenhuma nova versão é criada subsequentemente.No new versions are subsequently created.

Se um blob foi criado ou modificado depois que o controle de versão foi desabilitado na conta de armazenamento, a substituição do blob cria uma nova versão.If a blob was created or modified after versioning was disabled on the storage account, then overwriting the blob creates a new version. O blob atualizado não é mais a versão atual e não tem uma ID de versão.The updated blob is no longer the current version and does not have a version ID. Todas as atualizações subsequentes para o blob substituirão seus dados sem salvar o estado anterior.All subsequent updates to the blob will overwrite its data without saving the previous state.

Você pode ler ou excluir versões usando a ID de versão após a desabilitação do controle de versão.You can read or delete versions using the version ID after versioning is disabled. Você também pode listar as versões de um blob depois que o controle de versão está desabilitado.You can also list a blob's versions after versioning is disabled.

O diagrama a seguir mostra como a modificação de um blob após o controle de versão é desabilitada cria um blob sem controle de versão.The following diagram shows how modifying a blob after versioning is disabled creates a blob that is not versioned. Todas as versões existentes associadas ao blob persistem.Any existing versions associated with the blob persist.

Diagrama mostrando o blob de base modificado após a desabilitação do controle de versão.

Controle de versão e exclusão reversível do blobBlob versioning and soft delete

O controle de versão de BLOB e de exclusão reversível de blob funcionam juntos para fornecer proteção de dados ideal.Blob versioning and blob soft delete work together to provide you with optimal data protection. Ao habilitar a exclusão reversível, você especifica por quanto tempo o armazenamento do Azure deve reter um blob excluído por software.When you enable soft delete, you specify how long Azure Storage should retain a soft-deleted blob. Qualquer versão de blob com exclusão reversível permanece no sistema e pode ser reexcluída dentro do período de retenção de exclusão reversível.Any soft-deleted blob version remains in the system and can be undeleted within the soft delete retention period. Para obter mais informações sobre exclusão reversível de BLOB, consulte exclusão reversível para BLOBs de armazenamento do Azure.For more information about blob soft delete, see Soft delete for Azure Storage blobs.

Excluindo um BLOB ou uma versãoDeleting a blob or version

A exclusão reversível oferece proteção adicional para excluir versões de BLOB.Soft delete offers additional protection for deleting blob versions. Se o controle de versão e a exclusão reversível estiverem habilitados na conta de armazenamento, quando você excluir um blob, o armazenamento do Azure criará uma nova versão para salvar o estado do blob imediatamente antes da exclusão e excluirá a versão atual.If both versioning and soft delete are enabled on the storage account, then when you delete a blob, Azure Storage creates a new version to save the state of the blob immediately prior to deletion and deletes the current version. A nova versão não é excluída de maneira reversível e não é removida quando o período de retenção de exclusão reversível expira.The new version is not soft-deleted and is not removed when the soft-delete retention period expires.

Quando você exclui uma versão anterior do blob, a versão é excluída de maneira reversível.When you delete a previous version of the blob, the version is soft-deleted. A versão excluída reversível é mantida durante todo o período de retenção especificado nas configurações de exclusão reversível da conta de armazenamento e é excluída permanentemente quando o período de retenção de exclusão reversível expira.The soft-deleted version is retained throughout the retention period specified in the soft delete settings for the storage account and is permanently deleted when the soft delete retention period expires.

Para remover uma versão anterior de um blob, exclua-o explicitamente especificando a ID da versão.To remove a previous version of a blob, explicitly delete it by specifying the version ID.

O diagrama a seguir mostra o que acontece quando você exclui um BLOB ou uma versão de BLOB.The following diagram shows what happens when you delete a blob or a blob version.

Diagrama mostrando a exclusão de uma versão com exclusão reversível habilitada.

Se o controle de versão e a exclusão reversível estiverem habilitados em uma conta de armazenamento, nenhum instantâneo excluído por software será criado quando uma versão BLOB ou blob for modificada ou excluída.If both versioning and soft delete are enabled on a storage account, then no soft-deleted snapshot is created when a blob or blob version is modified or deleted.

Restaurando uma versão excluída de maneira reversívelRestoring a soft-deleted version

Você pode restaurar uma versão de blob com exclusão reversível chamando a operação restaurar blob na versão enquanto o período de retenção de exclusão reversível está em vigor.You can restore a soft-deleted blob version by calling the Undelete Blob operation on the version while the soft delete retention period is in effect. A operação restaurar blob restaura todas as versões com exclusão reversível do blob.The Undelete Blob operation restores all soft-deleted versions of the blob.

A restauração de versões com exclusão reversível com a operação restaurar blob não promove nenhuma versão para a versão atual.Restoring soft-deleted versions with the Undelete Blob operation does not promote any version to be the current version. Para restaurar a versão atual, primeiro restaure todas as versões excluídas por software e, em seguida, use a operação copiar blob para copiar uma versão anterior para restaurar o blob.To restore the current version, first restore all soft-deleted versions, and then use the Copy Blob operation to copy a previous version to restore the blob.

O diagrama a seguir mostra como restaurar versões de blob com exclusão reversível com a operação restaurar blob e como restaurar a versão atual do blob com a operação copiar blob .The following diagram shows how to restore soft-deleted blob versions with the Undelete Blob operation, and how to restore the current version of the blob with the Copy Blob operation.

Diagrama mostrando como restaurar versões com exclusão reversível.

Depois que o período de retenção de exclusão reversível tiver decorrido, todas as versões de blob excluídas por software serão excluídas permanentemente.After the soft-delete retention period has elapsed, any soft-deleted blob versions are permanently deleted.

Controle de versão do blob e instantâneos de BLOBBlob versioning and blob snapshots

Um instantâneo de blob é uma cópia somente leitura de um blob que é obtido em um ponto específico no tempo.A blob snapshot is a read-only copy of a blob that's taken at a specific point in time. Instantâneos de BLOB e versões de blob são semelhantes, mas um instantâneo é criado manualmente por você ou seu aplicativo, enquanto uma versão de blob é criada automaticamente em uma operação de gravação ou exclusão quando o controle de versão de blob está habilitado para sua conta de armazenamento.Blob snapshots and blob versions are similar, but a snapshot is created manually by you or your application, while a blob version is created automatically on a write or delete operation when blob versioning is enabled for your storage account.

Importante

A Microsoft recomenda que, depois de habilitar o controle de versão de BLOB, você também atualize seu aplicativo para parar de tirar instantâneos de blobs de blocos.Microsoft recommends that after you enable blob versioning, you also update your application to stop taking snapshots of block blobs. Se o controle de versão estiver habilitado para sua conta de armazenamento, todas as atualizações e exclusões de blob de blocos serão capturadas e preservadas por versões.If versioning is enabled for your storage account, all block blob updates and deletions are captured and preserved by versions. A criação de instantâneos não oferece nenhuma proteção adicional para seus dados de blob de blocos se o controle de versão de blob estiver habilitado e pode aumentar os custos e a complexidade do aplicativo.Taking snapshots does not offer any additional protections to your block blob data if blob versioning is enabled, and may increase costs and application complexity.

Instantâneo de um blob quando o controle de versão está habilitadoSnapshot a blob when versioning is enabled

Embora não seja recomendado, você pode tirar um instantâneo de um blob que também tem controle de versão.Although it is not recommended, you can take a snapshot of a blob that is also versioned. Se você não puder atualizar seu aplicativo para parar de tirar instantâneos de BLOBs quando habilitar o controle de versão, seu aplicativo poderá dar suporte a instantâneos e versões.If you cannot update your application to stop taking snapshots of blobs when you enable versioning, your application can support both snapshots and versions.

Quando você tira um instantâneo de um blob com versão, uma nova versão é criada ao mesmo tempo em que o instantâneo é criado.When you take a snapshot of a versioned blob, a new version is created at the same time that the snapshot is created. Uma nova versão atual também é criada quando um instantâneo é tirado.A new current version is also created when a snapshot is taken.

O diagrama a seguir mostra o que acontece quando você tira um instantâneo de um blob com versão.The following diagram shows what happens when you take a snapshot of a versioned blob. No diagrama, as versões de BLOB e os instantâneos com a ID de versão 2 e 3 contêm dados idênticos.In the diagram, blob versions and snapshots with version ID 2 and 3 contain identical data.

Diagrama que mostra instantâneos de um blob com versão.

Autorizar operações em versões de BLOBAuthorize operations on blob versions

Você pode autorizar o acesso a versões de BLOB usando uma das seguintes abordagens:You can authorize access to blob versions using one of the following approaches:

O controle de versão de blob foi projetado para proteger seus dados contra exclusão acidental ou mal-intencionada.Blob versioning is designed to protect your data from accidental or malicious deletion. Para aprimorar a proteção, a exclusão de uma versão de blob requer permissões especiais.To enhance protection, deleting a blob version requires special permissions. As seções a seguir descrevem as permissões necessárias para excluir uma versão de BLOB.The following sections describe the permissions needed to delete a blob version.

Ação do RBAC do Azure para excluir uma versão de BLOBAzure RBAC action to delete a blob version

A tabela a seguir mostra quais ações do RBAC do Azure dão suporte à exclusão de um BLOB ou uma versão de BLOB.The following table shows which Azure RBAC actions support deleting a blob or a blob version.

DescriptionDescription Operação do serviço blobBlob service operation Ação de dados RBAC do Azure necessáriaAzure RBAC data action required Suporte de função interna do AzureAzure built-in role support
Excluindo a versão atual do blobDeleting the current version of the blob Delete BlobDelete Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/delete Colaborador de dados de blob de armazenamentoStorage Blob Data Contributor
Excluindo uma versãoDeleting a version Delete BlobDelete Blob Microsoft. Storage/storageAccounts/blobservices/contêineres/BLOBs/deleteBlobVersion/açãoMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action Proprietário de Dados do Blob de ArmazenamentoStorage Blob Data Owner

Parâmetros de assinatura de acesso compartilhado (SAS)Shared access signature (SAS) parameters

O recurso assinado para uma versão de blob é bv .The signed resource for a blob version is bv. Para obter mais informações, consulte criar uma SAS de serviço ou criar uma SAS de delegação de usuário.For more information, see Create a service SAS or Create a user delegation SAS.

A tabela a seguir mostra a permissão necessária em uma SAS para excluir uma versão de BLOB.The following table shows the permission required on a SAS to delete a blob version.

PermissãoPermission Símbolo de URIURI symbol Operações permitidasAllowed operations
ExcluirDelete xx Excluir uma versão de BLOB.Delete a blob version.

Preços e cobrançaPricing and billing

Habilitar o controle de versão de blob pode resultar em encargos de armazenamento de dados adicionais para sua conta.Enabling blob versioning can result in additional data storage charges to your account. Ao projetar o aplicativo, é importante estar ciente de como essas cobranças podem aumentar para que você possa minimizar custos.When designing your application, it is important to be aware of how these charges might accrue so that you can minimize costs.

As versões de BLOB, como instantâneos de BLOB, são cobradas com a mesma taxa que os dados ativos.Blob versions, like blob snapshots, are billed at the same rate as active data. Como as versões são cobradas depende se você definiu explicitamente a camada para o blob de base ou para qualquer uma de suas versões (ou instantâneos).How versions are billed depends on whether you have explicitly set the tier for the base blob or for any of its versions (or snapshots). Para saber mais sobre as camadas de blobs, confira Armazenamento de Blobs do Azure: camadas de acesso quente, frio e de arquivamento.For more information about blob tiers, see Azure Blob storage: hot, cool, and archive access tiers.

Se você não alterou uma camada de BLOB ou de versão, será cobrado por blocos exclusivos de dados entre esse BLOB, suas versões e quaisquer instantâneos que ele possa ter.If you have not changed a blob or version's tier, then you are billed for unique blocks of data across that blob, its versions, and any snapshots it may have. Para obter mais informações, consulte cobrança quando a camada de BLOB não foi definida explicitamente.For more information, see Billing when the blob tier has not been explicitly set.

Se você alterou uma camada de BLOB ou de versão, será cobrado pelo objeto inteiro, independentemente de o blob e a versão serem eventualmente na mesma camada novamente.If you have changed a blob or version's tier, then you are billed for the entire object, regardless of whether the blob and version are eventually in the same tier again. Para obter mais informações, consulte cobrança quando a camada de blob foi definida explicitamente.For more information, see Billing when the blob tier has been explicitly set.

Observação

A habilitação do controle de versão de dados frequentemente substituídos pode resultar em encargos de capacidade de armazenamento maiores e maior latência durante as operações de listagem.Enabling versioning for data that is frequently overwritten may result in increased storage capacity charges and increased latency during listing operations. Para atenuar essas preocupações, armazene dados frequentemente substituídos em uma conta de armazenamento separada com o controle de versão desabilitado.To mitigate these concerns, store frequently overwritten data in a separate storage account with versioning disabled.

Para obter mais informações sobre detalhes de cobrança para instantâneos de BLOB, consulte instantâneos de blob.For more information about billing details for blob snapshots, see Blob snapshots.

Cobrança quando a camada de BLOB não foi definida explicitamenteBilling when the blob tier has not been explicitly set

Se você não definiu explicitamente a camada de BLOB para um blob de base ou qualquer uma de suas versões, você será cobrado por blocos ou páginas exclusivos no BLOB, suas versões e quaisquer instantâneos que ele possa ter.If you have not explicitly set the blob tier for a base blob or any of its versions, then you are charged for unique blocks or pages across the blob, its versions, and any snapshots it may have. Os dados compartilhados em um blob e suas versões são cobrados apenas uma vez.Data that is shared across a blob and its versions is charged only once. Quando um blob é atualizado, os dados em um blob de base divergem dos dados armazenados em suas versões e os dados exclusivos são cobrados por bloco ou página.When a blob is updated, then data in a base blob diverges from the data stored in its versions, and the unique data is charged per block or page.

Quando você substituir um bloco em um blob de blocos, esse bloco será cobrado subsequentemente como um único bloco.When you replace a block within a block blob, that block is subsequently charged as a unique block. Isso é verdadeiro mesmo se o bloco tiver a mesma ID de bloco e os mesmos dados que ela tem na versão anterior.This is true even if the block has the same block ID and the same data as it has in the previous version. Depois que o bloco for confirmado novamente, ele divergirá de sua contraparte na versão anterior e você será cobrado por seus dados.After the block is committed again, it diverges from its counterpart in the previous version, and you will be charged for its data. O mesmo se aplica para uma página em um blob de páginas é atualizada com os dados idênticos.The same holds true for a page in a page blob that's updated with identical data.

O armazenamento de BLOBs não tem meios para determinar se dois blocos contêm dados idênticos.Blob storage does not have a means to determine whether two blocks contain identical data. Cada bloco que é carregado e confirmado é tratado como exclusivo, mesmo se tiver os mesmos dados e a mesma ID de bloco.Each block that is uploaded and committed is treated as unique, even if it has the same data and the same block ID. Como as cobranças se acumulam para blocos exclusivos, é importante ter em mente que a atualização de um blob quando o controle de versão está habilitado resultará em blocos exclusivos adicionais e cobranças adicionais.Because charges accrue for unique blocks, it's important to keep in mind that updating a blob when versioning is enabled will result in additional unique blocks and additional charges.

Quando o controle de versão de blob está habilitado, chame operações de atualização em blobs de blocos para que eles atualizem o número mínimo possível de blocos.When blob versioning is enabled, call update operations on block blobs so that they update the least possible number of blocks. As operações de gravação que permitem um controle refinado sobre os blocos são colocar bloco e colocar lista de blocos.The write operations that permit fine-grained control over blocks are Put Block and Put Block List. A operação Put Blob , por outro lado, substitui todo o conteúdo de um blob e, portanto, pode levar a encargos adicionais.The Put Blob operation, on the other hand, replaces the entire contents of a blob and so may lead to additional charges.

Os cenários a seguir demonstram como as cobranças se acumulam para um blob de blocos e suas versões quando a camada de BLOB não foi definida explicitamente.The following scenarios demonstrate how charges accrue for a block blob and its versions when the blob tier has not been explicitly set.

Cenário 1Scenario 1

No cenário 1, o blob tem uma versão anterior.In scenario 1, the blob has a previous version. O BLOB não foi atualizado desde que a versão foi criada, portanto, os encargos são incorridos apenas para os blocos exclusivos 1, 2 e 3.The blob has not been updated since the version was created, so charges are incurred only for unique blocks 1, 2, and 3.

Diagrama 1 mostrando a cobrança de blocos exclusivos no blob de base e na versão anterior.

Cenário 2Scenario 2

No cenário 2, um bloco (bloco 3 no diagrama) no blob foi atualizado.In scenario 2, one block (block 3 in the diagram) in the blob has been updated. Embora o bloco atualizado contenha os mesmos dados e a mesma ID, ele não é o mesmo que o bloco 3 na versão anterior.Even though the updated block contains the same data and the same ID, it is not the same as block 3 in the previous version. Como resultado, a conta é cobrada por quatro blocos.As a result, the account is charged for four blocks.

Diagrama 2 mostrando a cobrança para blocos exclusivos no blob de base e na versão anterior.

Cenário 3Scenario 3

No cenário 3, o blob foi atualizado, mas a versão não.In scenario 3, the blob has been updated, but the version has not. O bloco 3 foi substituído pelo bloco 4 no blob de base, mas a versão anterior ainda reflete o bloco 3.Block 3 was replaced with block 4 in the base blob, but the previous version still reflects block 3. Como resultado, a conta é cobrada por quatro blocos.As a result, the account is charged for four blocks.

Diagrama 3 mostrando a cobrança de blocos exclusivos no blob de base e na versão anterior.

Cenário 4Scenario 4

No cenário 4, o blob de base foi totalmente atualizado e não contém nenhum dos seus blocos originais.In scenario 4, the base blob has been completely updated and contains none of its original blocks. Como resultado, a conta é cobrada por todos os oito blocos exclusivos — quatro no blob de base e quatro na versão anterior.As a result, the account is charged for all eight unique blocks — four in the base blob, and four in the previous version. Esse cenário pode ocorrer se você estiver gravando em um blob com a operação Put Blob , pois ele substitui todo o conteúdo do blob de base.This scenario can occur if you are writing to a blob with the Put Blob operation, because it replaces the entire contents of the base blob.

Diagrama 4 mostrando a cobrança de blocos exclusivos no blob de base e na versão anterior.

Cobrança quando a camada de blob foi definida explicitamenteBilling when the blob tier has been explicitly set

Se você definiu explicitamente a camada de BLOB para um BLOB ou versão (ou instantâneo), será cobrado pelo tamanho completo do conteúdo do objeto na nova camada, independentemente de ele compartilhar blocos com um objeto na camada original.If you have explicitly set the blob tier for a blob or version (or snapshot), then you are charged for the full content length of the object in the new tier, regardless of whether it shares blocks with an object in the original tier. Você também é cobrado pelo tamanho completo do conteúdo da versão mais antiga na camada original.You are also charged for the full content length of the oldest version in the original tier. Quaisquer outras versões anteriores ou instantâneos que permanecem na camada original são cobrados por blocos exclusivos que podem compartilhar, conforme descrito em cobrança quando a camada de BLOB não foi definida explicitamente.Any other previous versions or snapshots that remain in the original tier are charged for unique blocks that they may share, as described in Billing when the blob tier has not been explicitly set.

Movendo um blob para uma nova camadaMoving a blob to a new tier

A tabela a seguir descreve o comportamento de cobrança para um BLOB ou uma versão quando ele é movido para uma nova camada.The following table describes the billing behavior for a blob or version when it is moved to a new tier.

Quando a camada de blob está definida explicitamente em...When blob tier is set explicitly on… Em seguida, você será cobrado por...Then you are billed for...
Um blob de base com uma versão anteriorA base blob with a previous version O blob de base na nova camada e a versão mais antiga na camada original, além de quaisquer blocos exclusivos em outras versões. 1The base blob in the new tier and the oldest version in the original tier, plus any unique blocks in other versions.1
Um blob de base com uma versão anterior e um instantâneoA base blob with a previous version and a snapshot O blob de base na nova camada, a versão mais antiga na camada original e o instantâneo mais antigo na camada original, além de quaisquer blocos exclusivos em outras versões ou instantâneos1.The base blob in the new tier, the oldest version in the original tier, and the oldest snapshot in the original tier, plus any unique blocks in other versions or snapshots1.
Uma versão anteriorA previous version A versão na nova camada e o blob de base na camada original, além de quaisquer blocos exclusivos em outras versões. 1The version in the new tier and the base blob in the original tier, plus any unique blocks in other versions.1

1 Se houver outras versões ou instantâneos anteriores que não foram movidos da camada original, essas versões ou instantâneos serão cobrados com base no número de blocos exclusivos que eles contêm, conforme descrito em cobrança quando a camada de BLOB não tiver sido definida explicitamente.1If there are other previous versions or snapshots that have not been moved from their original tier, those versions or snapshots are charged based on the number of unique blocks they contain, as described in Billing when the blob tier has not been explicitly set.

O diagrama a seguir ilustra como os objetos são cobrados quando um blob com versão é movido para uma camada diferente.The following diagram illustrates how objects are billed when a versioned blob is moved to a different tier.

Diagrama mostrando como os objetos são cobrados quando um blob com versão é explicitamente em camadas.

A definição explícita da camada para um blob, versão ou instantâneo não pode ser desfeita.Explicitly setting the tier for a blob, version, or snapshot cannot be undone. Se você mover um blob para uma nova camada e, em seguida, movê-lo de volta para sua camada original, você será cobrado pelo tamanho completo do conteúdo do objeto, mesmo se ele compartilhar blocos com outros objetos na camada original.If you move a blob to a new tier and then move it back to its original tier, you are charged for the full content length of the object even if it shares blocks with other objects in the original tier.

As operações que definem explicitamente a camada de um blob, versão ou instantâneo incluem:Operations that explicitly set the tier of a blob, version, or snapshot include:

Excluindo um blob quando a exclusão reversível está habilitadaDeleting a blob when soft delete is enabled

Quando a exclusão reversível de blob estiver habilitada, se você excluir ou substituir um blob de base que teve sua camada definida explicitamente, todas as versões anteriores do blob excluído reversível serão cobradas com tamanho de conteúdo completo.When blob soft delete is enabled, if you delete or overwrite a base blob that has had its tier explicitly set, then any previous versions of the soft-deleted blob are billed at full content length. Para obter mais informações sobre como o controle de versão do blob e a exclusão reversível funcionam juntos, consulte controle de versão e exclusão reversível do blob.For more information about how blob versioning and soft delete work together, see Blob versioning and soft delete.

A tabela a seguir descreve o comportamento de cobrança para um blob que é excluído de maneira reversível, dependendo se o controle de versão está habilitado ou desabilitado.The following table describes the billing behavior for a blob that is soft-deleted, depending on whether versioning is enabled or disabled. Quando o controle de versão está habilitado, uma versão é criada quando um blob é excluído de maneira reversível.When versioning is enabled, a version is created when a blob is soft-deleted. Quando o controle de versão está desabilitado, a exclusão reversível de um blob cria um instantâneo de exclusão reversível.When versioning is disabled, soft-deleting a blob creates a soft-delete snapshot.

Quando você substitui um blob de base pela sua camada definida explicitamente...When you overwrite a base blob with its tier explicitly set… Em seguida, você será cobrado por...Then you are billed for...
Se a exclusão reversível de BLOB e o controle de versão estiverem habilitadosIf blob soft delete and versioning are both enabled Todas as versões existentes com tamanho de conteúdo completo, independentemente da camada.All existing versions at full content length regardless of tier.
Se a exclusão reversível de blob estiver habilitada, mas o controle de versão estiver desabilitadoIf blob soft delete is enabled but versioning is disabled Todos os instantâneos de exclusão reversível existentes com tamanho de conteúdo completo, independentemente da camada.All existing soft-delete snapshots at full content length regardless of tier.

Veja tambémSee also