Gerenciar e localizar dados de Blob do Azure com tags de índice de blob

À medida que os conjuntos de dados aumentam, encontrar um objeto específico em um mar de dados pode ser difícil. As tags de índice de Blob fornecem recursos de gerenciamento e descoberta de dados usando atributos de tag de índice de chave-valor. Você pode categorizar e localizar objetos em um único contêiner ou em todos os contêineres em sua conta de armazenamento. À medida que os requisitos de dados mudam, os objetos podem ser categorizados dinamicamente atualizando suas tags de índice. Os objetos podem permanecer no local com sua organização de contêiner atual.

As tags de índice de Blob permitem:

  • Categorize dinamicamente seus blobs usando tags de índice de chave-valor

  • Encontre rapidamente blobs marcados específicos em toda uma conta de armazenamento

  • Especificar comportamentos condicionais para APIs de blob com base na avaliação de marcas de índice

  • Use tags de índice para controles avançados em recursos como o gerenciamento do ciclo de vida do blob

Considere um cenário em que você tenha milhões de blobs em sua conta de armazenamento, acessados por muitos aplicativos diferentes. Você deseja encontrar todos os dados relacionados de um único projeto. Você não tem certeza do que está no escopo, pois os dados podem ser espalhados por vários contêineres com diferentes convenções de nomenclatura. No entanto, seus aplicativos carregam todos os dados com tags baseadas em seu projeto. Em vez de pesquisar milhões de blobs e comparar nomes e propriedades, você pode usar Project = Contoso como critério de descoberta. O índice de Blob filtrará todos os contêineres em toda a sua conta de armazenamento para localizar e retornar rapidamente apenas o conjunto de 50 blobs do Project = Contoso.

Para começar com exemplos sobre como usar o índice de blob, consulte Usar tags de índice de blob para gerenciar e localizar dados.

Tags de índice de Blob e gerenciamento de dados

Os prefixos de nome de contêiner e blob são categorizações unidimensionais. As tags de índice de blob permitem a categorização multidimensional para tipos de dados de blob (Bloquear, Acrescentar ou Página). A categorização multidimensional é indexada nativamente pelo Armazenamento de Blobs do Azure para que você possa localizar rapidamente seus dados.

Considere os cinco blobs a seguir em sua conta de armazenamento:

  • container1/transação.csv

  • container2/campanha.docx

  • fotos/bannerfoto.png

  • arquivos/concluídos/2019revisão.pdf

  • logs/2020/01/01/logfile.txt

Esses blobs são separados usando um prefixo de container/pasta virtual/nome de blob. Você pode definir um atributo de marca de índice nesses cinco blobs para categorizá-los juntos, mantendo sua organização de Project = Contoso prefixo atual. Adicionar tags de índice elimina a necessidade de mover dados, expondo a capacidade de filtrar e localizar dados usando o índice.

Definindo tags de índice de blob

As tags de índice de Blob são atributos de chave-valor que podem ser aplicados a objetos novos ou existentes em sua conta de armazenamento. Você pode especificar marcas de índice durante o processo de upload usando as operações Colocar Blob, Colocar Lista de Bloqueios ou Copiar Blob e o cabeçalho opcionalx-ms-tags. Se você já tiver blobs em sua conta de armazenamento, chame set Blob Tags passando um documento XML formatado com as tags de índice no corpo da solicitação.

Importante

A configuração de tags de índice de blob pode ser executada pelo Proprietário de Dados do Blob de Armazenamento e por qualquer pessoa com uma Assinatura de Acesso Compartilhado que tenha permissão para acessar as tags do blob (a t permissão SAS).

Além disso, os usuários do RBAC com a Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write permissão podem executar essa operação.

Você pode aplicar uma única tag em seu blob para descrever quando seus dados foram concluídos de processamento.

"processedDate" = '2020-01-01'

Você pode aplicar várias tags em seu blob para ser mais descritivo dos dados.

"Projeto" = 'Contoso' "Classificado" = 'Verdadeiro' "Status" = 'Não processado' "Prioridade" = '01'

Para modificar os atributos de tag de índice existentes, recupere os atributos de tag existentes, modifique os atributos de tag e substitua pela operação set Blob Tags . Para remover todas as tags de índice do blob, chame a Set Blob Tags operação sem atributos de tag especificados. Como as tags de índice de blob são um subrecurso para o conteúdo de dados de blob, Set Blob Tags não modifica nenhum conteúdo subjacente e não altera o tempo de última modificação ou eTag do blob. Você pode criar ou modificar tags de índice para todos os blobs base atuais. As tags de índice também são preservadas para versões anteriores, mas não são passadas para o mecanismo de índice de blob, portanto, não é possível consultar tags de índice para recuperar versões anteriores. As tags em snapshots ou blobs excluídos suavemente não podem ser modificadas.

Os seguintes limites se aplicam às tags de índice de blob:

  • Cada blob pode ter até 10 tags de índice de blob

  • As teclas de tag devem ter entre um e 128 caracteres.

  • Os valores das tags devem estar entre zero e 256 caracteres.

  • As chaves e os valores das tags diferenciam maiúsculas de minúsculas.

  • As chaves e valores de tag suportam apenas tipos de dados de cadeia de caracteres. Quaisquer números, datas, horas ou caracteres especiais são salvos como cadeias de caracteres.

  • Se o controle de versão estiver habilitado, as tags de índice serão aplicadas a uma versão específica do blob. Se você definir tags de índice na versão atual e uma nova versão for criada, a tag não será associada à nova versão. A tag será associada apenas à versão anterior.

  • As chaves e os valores das tags devem seguir as seguintes regras de nomenclatura:

    • Caracteres alfanuméricos:

      • a az (letras minúsculas)

      • De A a Z (letras maiúsculas)

      • 0 a 9 (números)

    • Caracteres especiais válidos: espaço, mais, menos, ponto, dois pontos, igual, sublinhado, barra ( +-.:=_/)

Como obter e listar tags de índice de blob

As tags de índice de blob são armazenadas como um subrecurso ao lado dos dados de blob e podem ser recuperadas independentemente do conteúdo de dados de blob subjacente. As tags de índice de Blob para um único blob podem ser recuperadas com a operação Obter Tags de Blob . A operação List Blobs com o include:tags parâmetro também retornará todos os blobs dentro de um contêiner junto com suas tags de índice de blob.

Importante

A obtenção e listagem de tags de índice de blob pode ser realizada pelo Proprietário de Dados do Blob de Armazenamento e por qualquer pessoa com uma Assinatura de Acesso Compartilhado que tenha permissão para acessar as tags do blob (a t permissão SAS).

Além disso, os usuários do RBAC com a Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read permissão podem executar essa operação.

Para quaisquer blobs com pelo menos uma marca de índice de blob, o x-ms-tag-count é retornado nas operações Listar Blobs, Obter Blob e Obter Propriedades de Blob, indicando a contagem de tags de índice no blob.

Localizando dados usando tags de índice de blob

O mecanismo de indexação expõe seus atributos chave-valor em um índice multidimensional. Depois de definir suas tags de índice, elas existem no blob e podem ser recuperadas imediatamente.

Pode levar algum tempo até que o índice de blob seja atualizado. Isso é verdade tanto para adicionar tags quanto para editar as existentes. O tempo necessário depende da carga de trabalho. Por exemplo, se uma operação set Blob Tags levar 30 minutos para ser concluída a uma taxa de 15000 a 20000 transações por segundo, poderá levar até 10 minutos para indexar todos esses blobs. A uma taxa mais baixa, o atraso de indexação pode ser inferior a um segundo. A distribuição do tráfego também afeta os atrasos de indexação. Por exemplo, se um aplicativo cliente definir tags em blobs em ordem sequencial sob o mesmo contêiner, o atraso poderá ser maior do que seria se as tags fossem aplicadas a blobs que não estão localizados juntos.

Após as atualizações do índice de blob, você pode usar os recursos nativos de consulta e descoberta oferecidos pelo Armazenamento de Blobs.

A operação Localizar Blobs por Tags permite obter um conjunto filtrado de blobs cujas tags de índice correspondem a uma determinada expressão de consulta. Find Blobs by Tags Suporta filtragem em todos os contêineres em sua conta de armazenamento ou você pode definir o escopo da filtragem para apenas um único contêiner. Como todas as chaves e valores da tag de índice são strings, os operadores relacionais usam uma classificação lexicográfica.

Importante

A localização de dados usando tags de índice de blob pode ser realizada pelo Proprietário de Dados de Blob de Armazenamento e por qualquer pessoa com uma Assinatura de Acesso Compartilhado que tenha permissão para localizar blobs por tags (a f permissão SAS).

Além disso, os usuários do RBAC com a Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action permissão podem executar essa operação.

Os seguintes critérios se aplicam à filtragem de índice de blob:

  • As teclas de tag devem ser colocadas entre aspas duplas (")

  • Os valores das tags e os nomes dos contêineres devem ser colocados entre aspas simples (')

  • O caractere @ só é permitido para filtragem em um nome de contêiner específico (por exemplo, @container = 'ContainerName')

  • Os filtros são aplicados com classificação lexicográfica em cadeias de caracteres

  • As operações do mesmo intervalo lateral na mesma chave são inválidas (por exemplo, "Rank" > '10' AND "Rank" >= '15')

  • Ao usar REST para criar uma expressão de filtro, os caracteres devem ser codificados por URI

  • As consultas de tags são otimizadas para correspondência de igualdade usando uma única tag (por exemplo, StoreID = "100"). As consultas de intervalo que usam uma única tag envolvendo >, =, <, ><= também são eficientes. Qualquer consulta usando E com mais de uma tag não será tão eficiente. Por exemplo, Custo "01" E Custo ><= "100" é eficiente. O custo > "01 E StoreID = "2" não é tão eficiente.

A tabela abaixo mostra todos os operadores válidos para Find Blobs by Tags:

Operator Description Exemplo
= Igual "Status" = 'In Progress'
> Maior que "Date" > '2018-06-18'
>= Maior ou igual a "Priority" >= '5'
< Menor que "Age" < '32'
<= Menor ou igual a "Priority" <= '5'
AND E lógico "Rank" >= '010' AND "Rank" < '100'
@container Escopo para um contêiner específico @container = 'videofiles' AND "status" = 'done'

Nota

Esteja familiarizado com a ordenação lexicográfica ao definir e consultar tags.

  • Os números são ordenados antes das letras. Os números são ordenados com base no primeiro dígito.
  • As letras maiúsculas são classificadas antes das letras minúsculas.
  • Os símbolos não são padrão. Alguns símbolos são classificados antes dos valores numéricos. Outros símbolos são classificados antes ou depois das letras.

Operações de blob condicional com tags de índice de blob

Nas versões REST 2019-10-10 e superiores, a maioria das APIs de serviço de blob agora oferece suporte a um cabeçalho condicional, x-ms-if-tagsde modo que a operação só terá êxito se a condição de índice de blob especificada for atendida. Se a condição não for atendida, você receberá error 412: The condition specified using HTTP conditional header(s) is not met.

O x-ms-if-tags cabeçalho pode ser combinado com os outros cabeçalhos condicionais HTTP existentes (If-Match, If-None-Match e assim por diante). Se vários cabeçalhos condicionais forem fornecidos em uma solicitação, todos eles deverão avaliar true para que a operação seja bem-sucedida. Todos os cabeçalhos condicionais são efetivamente combinados com o lógico E.

A tabela abaixo mostra os operadores válidos para operações condicionais:

Operator Description Exemplo
= Igual "Status" = 'In Progress'
<> Não é igual a "Status" <> 'Done'
> Maior que "Date" > '2018-06-18'
>= Maior ou igual a "Priority" >= '5'
< Menor que "Age" < '32'
<= Menor ou igual a "Priority" <= '5'
AND E lógico "Rank" >= '010' AND "Rank" < '100'
OR OU lógico "Status" = 'Done' OR "Priority" >= '05'

Nota

Há dois operadores adicionais, não iguais e lógicos ou, que são permitidos no cabeçalho condicional x-ms-if-tags para operações de blob, mas não existem na Find Blobs by Tags operação.

Integrações de plataforma com tags de índice de blob

As tags de índice de Blob não apenas ajudam a categorizar, gerenciar e pesquisar seus dados de blob, mas também fornecem integração com outros recursos de armazenamento de Blob, como o gerenciamento do ciclo de vida.

Gestão do ciclo de vida

Usando o blobIndexMatch filtro como regra no gerenciamento do ciclo de vida, você pode mover dados para camadas mais frias ou excluir dados com base nas tags de índice aplicadas aos seus blobs. Você pode ser mais granular em suas regras e só mover ou excluir blobs se eles corresponderem aos critérios de tags especificados.

Pode definir uma correspondência de índice de blobs como um filtro autónomo definido numa regra do ciclo de vida para aplicar ações em dados etiquetados. Também pode combinar um prefixo e um índice de blobs para corresponder conjuntos de dados mais específicos. Especificar vários filtros numa regra do ciclo de vida aplica uma operação lógica AND. A ação só será aplicada se todos os critérios de filtro corresponderem.

A regra de gerenciamento do ciclo de vida de exemplo a seguir se aplica a blobs de bloco em um contêiner chamado videofiles. A regra escalona blobs para armazenamento de arquivo somente se os dados corresponderem aos critérios de marca de índice de blob do "Status" == 'Processed' AND "Source" == 'RAW'.

Blob index match rule example for Lifecycle management in Azure portal

Permissões e autorização

Você pode autorizar o acesso a tags de índice de blob usando uma das seguintes abordagens:

As tags de índice de blob são um subrecurso para os dados de blob. Um usuário com permissões ou um token SAS para ler ou gravar blobs pode não ter acesso às tags de índice de blob.

Controlo de acesso baseado em funções

Os chamadores que usam uma identidade do Microsoft Entra podem receber as seguintes permissões para operar em tags de índice de blob.

Operações de tag de índice de Blob Ação do RBAC do Azure
Definir tags de Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
Obter tags de Blob Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
Encontrar Blobs por Tags Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action

Permissões adicionais, separadas dos dados de blob subjacentes, são necessárias para operações de tag de índice. A função Proprietário de Dados de Blob de Armazenamento recebe permissões para todas as três operações de marca de índice de blob.

Permissões SAS

Os chamadores que usam uma assinatura de acesso compartilhado (SAS) podem receber permissões de escopo para operar em tags de índice de blob.

SAS de serviço para um blob

As permissões a seguir podem ser concedidas em uma SAS de serviço para um blob para permitir o acesso a tags de índice de blob. As permissões de leitura (r) e gravação (w) do blob por si só não são suficientes para permitir a leitura ou gravação de suas tags de índice.

Permissão Símbolo URI Operações permitidas
Tags de índice t Obter e definir tags de índice para um blob

SAS de serviço para um contêiner

As seguintes permissões podem ser concedidas em uma SAS de serviço para um contêiner para permitir a filtragem em tags de blob. A permissão de lista de blob (i) não é suficiente para permitir a filtragem de blobs por suas tags de índice.

Permissão Símbolo URI Operações permitidas
Tags de índice f Encontrar blobs com tags de índice

Conta SAS

As seguintes permissões podem ser concedidas em uma conta SAS para permitir o acesso a tags de índice de blob e filtragem em tags de blob.

Permissão Símbolo URI Operações permitidas
Tags de índice t Obter e definir tags de índice para um blob
Tags de índice f Encontrar blobs com tags de índice

As permissões de leitura () e gravação () do blob por si só não são suficientes para permitir a leitura ou gravação de suas tags de índice, e a permissão de lista (rwi) não é suficiente para permitir a filtragem de blobs por suas tags de índice.

Escolhendo entre metadados e tags de índice de blob

Tanto as tags de índice de blob quanto os metadados fornecem a capacidade de armazenar propriedades arbitrárias de chave-valor definidas pelo usuário ao lado de um recurso de blob. Ambos podem ser recuperados e definidos diretamente, sem retornar ou alterar o conteúdo do blob. É possível usar metadados e tags de índice.

Somente as tags de índice são automaticamente indexadas e tornadas pesquisáveis pelo serviço nativo de Armazenamento de Blobs. Os metadados não podem ser indexados ou pesquisados nativamente. Você deve usar um serviço separado, como o Azure Search. As tags de índice de Blob têm permissões adicionais para leitura, filtragem e gravação separadas dos dados de blob subjacentes. Os metadados usam as mesmas permissões que o blob e são retornados como cabeçalhos HTTP pelas operações Get Blob e Get Blob Properties. As tags de índice de Blob são criptografadas em repouso usando uma chave gerenciada pela Microsoft. Os metadados são criptografados em repouso usando a mesma chave de criptografia especificada para dados de blob.

A tabela a seguir resume as diferenças entre metadados e tags de índice de blob:

Metadados Tags de índice de Blob
Limites Sem limite numérico, 8 KB no total, sem distinção entre maiúsculas e minúsculas 10 tags por blob max, 768 bytes por tag, sensível a maiúsculas e minúsculas
Atualizações Não permitido na camada de arquivamento, substitui todos os metadados existentes, Set Blob MetadataSet Blob Metadata altera o tempo da última modificação do blob Permitido para todas as camadas de acesso, substitui todas as tags existentes, Set Blob TagsSet Blob Tags não altera a hora da última modificação do blob
Armazenamento Armazenado com os dados de blob Subrecurso dos dados de blob
Indexação & Consulta Deve usar um serviço separado, como o Azure Search Recursos de indexação e consulta incorporados ao Armazenamento de Blobs
Encriptação Criptografado em repouso com a mesma chave de criptografia usada para dados de blob Criptografado em repouso com uma chave de criptografia gerenciada pela Microsoft
Preços O tamanho dos metadados está incluído nos custos de armazenamento de um blob Custo fixo por tag de índice
Resposta do cabeçalho Metadados retornados como cabeçalhos em Get Blob e Get Blob Properties Contagem de tags retornada por ou Get Blob Properties, tags retornadas somente por e Get BlobGet Blob TagsList Blobs
Permissões As permissões de leitura ou gravação para dados de blob se estendem aos metadados São necessárias permissões adicionais para ler, filtrar ou escrever etiquetas de índice
Atribuição de nomes Os nomes de metadados devem aderir às regras de nomenclatura para identificadores C# As tags de índice de blob suportam uma gama mais ampla de caracteres alfanuméricos

Preços

Você é cobrado pelo número médio mensal de tags de índice em uma conta de armazenamento. Não há custo para o mecanismo de indexação. As solicitações para definir tags de Blob, Obter tags de Blob e Localizar tags de Blob são cobradas de acordo com as respetivas taxas de transação atuais. Observe que o número de transações de lista consumidas ao fazer uma transação Localizar Blobs por Tag é igual ao número de cláusulas na solicitação. Por exemplo, a consulta (StoreID = 100) é uma transação de lista. A consulta (StoreID = 100 E SKU = 10010) é composta por duas transações de lista. Consulte Preços de Blob de bloco para saber mais.

Suporte de funcionalidades

O suporte para esse recurso pode ser afetado pela habilitação do Data Lake Storage Gen2, do protocolo NFS (Network File System) 3.0 ou do SSH File Transfer Protocol (SFTP). Se você habilitou qualquer um desses recursos, consulte Suporte ao recurso de Armazenamento de Blob nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Condições e problemas conhecidos

Esta seção descreve problemas e condições conhecidos.

  • Apenas contas v2 de uso geral e contas de blob de bloco premium são suportadas. Não há suporte para blob de página premium, blob herdado e contas com um namespace hierárquico habilitado. Contas v1 de uso geral não serão suportadas.

  • Carregar blobs de página com tags de índice não persiste as tags. Defina as tags depois de carregar um blob de página.

  • Se o controle de versão de armazenamento de Blob estiver habilitado, você ainda poderá usar marcas de índice na versão atual. As tags de índice são preservadas para versões anteriores, mas essas tags não são passadas para o mecanismo de índice de blob, portanto, você não pode usá-las para recuperar versões anteriores. Se você promover uma versão anterior para a versão atual, as tags dessa versão anterior se tornarão as tags da versão atual. Como essas tags estão associadas à versão atual, elas são passadas para o mecanismo de índice de blob e você pode consultá-las.

  • Não há nenhuma API para determinar se as tags de índice são indexadas.

  • A gestão do ciclo de vida só suporta verificações de igualdade com correspondência do índice de blobs.

  • Copy Blob Não copia tags de índice de blob do blob de origem para o novo blob de destino. Você pode especificar as tags que deseja aplicar ao blob de destino durante a operação de cópia.

Perguntas mais frequentes (FAQ)

Consulte Perguntas frequentes sobre tags de índice de Blob.

Próximos passos

Para obter um exemplo de como usar o índice de blob, consulte Usar o índice de blob para gerenciar e localizar dados.

Saiba mais sobre o gerenciamento do ciclo de vida e defina uma regra com correspondência de índice de blob.