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 marcas de índice de blob fornecem funcionalidades de gerenciamento e descoberta de dados usando atributos de marca de índice do par 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 de forma dinâmica atualizando suas marcas de índice. Os objetos podem permanecer no local com sua organização de contêiner atual.
As marcas de índice de blob permitem:
Categorizar dinamicamente seus blobs usando marcas de índice do par chave-valor
Localizar rapidamente blobs específicos marcados em uma conta de armazenamento inteira
Especificar comportamentos condicionais para APIs de blob com base na avaliação de marcas de índice
Usar marcas de índice para controles avançados em recursos como Gerenciamento de ciclo de vida de blob
Considere um cenário em que você tenha milhões de blobs em sua conta de armazenamento, acessados por vários aplicativos diferentes. Você deseja localizar todos os dados relacionados de um único projeto. Você não tem certeza do que está no escopo, pois os dados podem ser distribuídos em vários contêineres com diferentes convenções de nomenclatura. No entanto, seus aplicativos carregam todos os dados com marcas com base em seu projeto. Em vez de pesquisar por milhões de blobs e comparar nomes e propriedades, você pode usar Project = Contoso
como seus critérios de descoberta. O índice de blob filtrará todos os contêineres em toda a conta de armazenamento para localizar e retornar rapidamente apenas o conjunto de 50 blobs de Project = Contoso
.
Para começar com exemplos de como usar o índice de blob, consulte Usar marcas de índice de blob para gerenciar e localizar dados .
Marcas de índice de blob e gerenciamento de dados
Os prefixos de nome de contêiner e blob são categorizações unidimensionais. As marcas de índice de blob permitem a categorização multidimensional para tipos de dados de blob (bloco, acréscimo ou página). A categorização multidimensional é indexada nativamente pelo Armazenamento de blobs do Azure para que você possa localizar seus dados rapidamente.
Considere os cinco blobs a seguir em sua conta de armazenamento:
container1/transaction.csv
container2/campaign.docx
photos/bannerphoto.png
archives/completed/2019review.pdf
logs/2020/01/01/logfile.txt
Esses blobs são separados usando um prefixo de contêiner/pasta virtual/nome do blob. Você pode definir um atributo de marca de índice de Project = Contoso
nesses cinco blobs para categorizá-los ao mesmo tempo em que mantém sua organização de prefixo atual. A adição de marcas de índice elimina a necessidade de mover dados expondo a capacidade de filtrar e localizar dados usando o índice.
Configuração de marcas de índice de blob
Marcas de índice de blob são atributos do par 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 carregamento usando Colocar blob, Colocar lista de blocos ou operações de Copiar blob e o cabeçalho x-ms-tags
opcional. Se você já tiver blobs em sua conta de armazenamento, chame Definir marcas de blob passando um documento XML formatado com as marcas de índice no corpo da solicitação.
Importante
A configuração de marcas 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 marcas do blob (a t
permissão de SAS).
Além disso, os usuários do RBAC com a permissão Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
podem executar essa operação.
Você pode aplicar uma única marca em seu blob para descrever quando seus dados concluíram o processamento.
"processedDate" = '2020-01-01'
Você pode aplicar várias marcas em seu blob para que sejam mais descritivas em relação aos dados.
"Project" = 'Contoso' "Classified" = 'True' "Status" = 'Unprocessed' "Priority" = '01'
Para modificar os atributos de marca de índice existentes, recupere os atributos de marca existentes, modifique-os e substitua pela operação Definir marcas de blob. Para remover todas as marcas de índice do blob, chame a operação Set Blob Tags
sem atributos de marca especificados. Como as marcas de índice de blob são um sub-recurso para o conteúdo de dados de blob, Set Blob Tags
não modifica nenhum conteúdo subjacente e não altera a hora da última modificação ou a eTag do blob. É possível criar ou modificar marcas de índice para todos os blobs de base atuais. As marcas 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 marcas de índice para recuperar versões anteriores. As marcas de instantâneos ou de blobs excluídos temporariamente não podem ser modificadas.
Os seguintes limites se aplicam a marcas de índice de blob:
Cada blob pode ter até 10 marcas de índice de blob
As chaves de marca precisam ter entre um e 128 caracteres.
Os valores de marca precisam ter entre zero e 256 caracteres.
As chaves e os valores de marca diferenciam maiúsculas de minúsculas.
As chaves e valores de marca dão suporte apenas a tipos de dados de cadeia de caracteres. Os números, as datas, as horas ou os caracteres especiais são salvos como cadeias de caracteres.
Se o controle de versão estiver habilitado, as marcas de índice serão aplicadas a uma versão específica do blob. Se você definir marcas de índice na versão atual e uma versão for criada, a marca não será associada à nova versão. A marca só será associada à versão anterior.
As chaves e os valores de marca devem aderir às seguintes regras de nomenclatura:
Caracteres alfanuméricos:
a a z (letras minúsculas)
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 (
+-.:=_/
)
Dica
Você pode usar uma tarefa de armazenamento para definir marcas em objetos em escala em várias contas de armazenamento com base em um conjunto de condições que você definir. Uma conta de armazenamento é um recurso disponível em Ações de Armazenamento do Azure; uma estrutura sem servidor que você pode usar para executar operações de dados comuns em milhões de objetos em várias contas de armazenamento. Para saber mais, consulte O que são as Ações de Armazenamento do Azure?.
Obtenção e listagem de marcas de índice de Blob
As marcas de índice de blob são armazenadas como um sub-recurso junto aos dados de blob e podem ser recuperadas independentemente do conteúdo dos dados de blob subjacente. As marcas de índice de blob para um único blob podem ser recuperadas com a operação Obter marcas de blob. A operação Listar blobs com o parâmetro include:tags
também retornará todos os blobs dentro de um contêiner, junto com suas marcas de índice de blob.
Importante
A obtenção e a listagem de marcas de índice de blob podem ser executadas 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 marcas do blob (a t
permissão de SAS).
Além disso, os usuários do RBAC com a permissão Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
podem executar essa operação.
Para qualquer blob com pelo menos uma marca de índice de blob, x-ms-tag-count
é retornado nas operações Listar blobs, Obter blobe Obter propriedades de blob, indicando a contagem de marcas de índice no blob.
Localização de dados usando marcas de índice de blob
O mecanismo de indexação expõe seus atributos do par chave-valor em um índice multidimensional. Depois de definir as marcas de índice, elas ficam registradas no blob e podem ser recuperadas imediatamente.
Pode levar algum tempo até que o índice do blob seja atualizado. Isso é verdadeiro tanto para adicionar marcas quanto para editar as existentes. O tempo necessário depende da carga de trabalho. Por exemplo, se uma operação Definir marcas de Blob levar 30 minutos para ser concluída a uma taxa de 15.000 a 20.000 transações por segundo, poderá levar até 10 minutos para indexar todos esses blobs. Em uma taxa menor, o atraso na indexação pode ser inferior a um segundo. A distribuição do tráfego também afeta os atrasos na indexação. Por exemplo, se um aplicativo cliente definir marcas nos blobs em ordem sequencial no mesmo contêiner, o atraso poderá ser maior do que seria se as marcas fossem aplicadas aos blobs que não estão localizados juntos.
Depois que o índice de blob for atualizado, você poderá usar os recursos nativos de consulta e descoberta oferecidos pelo Armazenamento de blobs.
A operação Localizar blobs por marcas permite que você obtenha um conjunto filtrado de blobs cujas marcas de índice correspondem a uma determinada expressão de consulta. Find Blobs by Tags
oferece suporte à filtragem em todos os contêineres em sua conta de armazenamento ou você pode fazer o escopo da filtragem para apenas um único contêiner. Como todos os valores e chaves de marca de índice são cadeias de caracteres, os operadores relacionais usam uma classificação lexicográfica.
Importante
A ação de encontrar dados usando as marcas 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 encontrar blobs pelas marcas (a permissão de SAS f
).
Além disso, os usuários do RBAC com a permissão Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action
podem executar essa operação.
Os critérios a seguir se aplicam à filtragem de índice de blob:
A chaves de marca devem ser colocadas entre aspas duplas (")
Os valores de marca e os nomes de contêiner 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 a classificação lexicográfica em cadeias de caracteres
As operações de intervalo de mesmo lado 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 em URI
As consultas de marcação são otimizadas para correspondência de igualdade usando uma única marcação (por exemplo, StoreID = "100"). As consultas de intervalo que usam uma só marca envolvendo >, >=, < e <= também são eficientes. Qualquer consulta que use AND com mais de uma marcação não será tão eficiente. Por exemplo, Cost > "01" AND Cost <= "100" é eficiente. Cost > "01 AND StoreID = "2" não é tão eficiente.
A tabela abaixo mostra todos os operadores válidos para Find Blobs by Tags
:
Operador | Descrição | Exemplo |
---|---|---|
= | Igual a | "Status" = 'In Progress' |
> | Maior que | "Date" > '2018-06-18' |
>= | Maior ou igual | "Priority" >= '5' |
< | Menor que | "Age" < '32' |
<= | Inferior ou igual | "Priority" <= '5' |
AND | AND lógico | "Rank" >= '010' AND "Rank" < '100' |
@container | Escopo para um contêiner específico | @container = 'videofiles' AND "status" = 'done' |
Observação
Esteja familiarizado com a ordenação lexicográfica ao configurar e consultar marcas.
- Os números são classificados antes das letras. Os números são classificados 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 de valores numéricos. Outros símbolos são classificados antes ou depois das letras.
Operações de blob condicional com marcas de índice de blob
Nas versões REST 2019-10-10 e superiores, a maioria das APIs de serviço blob agora oferece suporte a um cabeçalho condicional, x-ms-if-tags
, de modo que a operação só terá sucesso se a condição de índice de blob especificada for atendida. Se a condição não for atendida, você obterá error 412: The condition specified using HTTP conditional header(s) is not met
.
O cabeçalho x-ms-if-tags
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 ser avaliados como verdadeiros para que a operação tenha sucesso. Todos os cabeçalhos condicionais são efetivamente combinados com AND lógico.
A tabela abaixo mostra os operadores válidos para operações condicionais:
Operador | Descrição | Exemplo |
---|---|---|
= | Igual | "Status" = 'In Progress' |
<> | Diferente | "Status" <> 'Done' |
> | Maior que | "Date" > '2018-06-18' |
>= | Maior ou igual | "Priority" >= '5' |
< | Menor que | "Age" < '32' |
<= | Inferior ou igual | "Priority" <= '5' |
AND | AND lógico | "Rank" >= '010' AND "Rank" < '100' |
OU | OR lógico | "Status" = 'Done' OR "Priority" >= '05' |
Observação
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 operação Find Blobs by Tags
.
Integrações de plataforma com marcas de índice de blob
Marcas de índice de blob não apenas ajudam a categorizar, gerenciar e pesquisar em seus dados de blob, mas também fornecem integração com outros recursos de Armazenamento de blobs, como o Gerenciamento do ciclo de vida.
Gerenciamento do ciclo de vida
Usando o blobIndexMatch
como um filtro de regra no gerenciamento do ciclo de vida, você pode mover dados para camadas mais frias ou excluir dados com base nas marcas de índice aplicadas aos seus blobs. Você pode ser mais granular em suas regras e mover ou excluir somente blobs se eles corresponderem aos critérios de marcas especificados.
Você pode definir uma correspondência de índice de blob como um conjunto de filtros autônomo em uma regra de ciclo de vida para aplicar ações em dados marcados. Ou você pode combinar um prefixo e um índice de blob para corresponder a conjuntos de dados mais específicos. A especificação de vários filtros em uma regra de ciclo de vida aplica-se uma operação de AND lógico. A ação será aplicada somente se todos os critérios de filtro corresponderem.
A seguinte regra de gerenciamento do ciclo de vida de exemplo se aplica ao blob de blocos em um contêiner chamado videofiles
. Os blobs de camadas de regra são para armazenamento de arquivo morto somente se os dados corresponderem aos critérios de marca de índice de blob de "Status" == 'Processed' AND "Source" == 'RAW'
.
Permissões e autorização
Você pode autorizar o acesso a marcas de índice de blob usando uma das seguintes abordagens:
Usar o RBAC do Azure (controle de acesso baseado em função) para conceder permissões a uma entidade de segurança do Microsoft Entra. Use o Microsoft Entra ID para maior segurança e facilidade de uso. Para saber mais sobre como usar o Microsoft Entra ID com operações de blob, confira Autorizar o acesso aos dados no Armazenamento do Microsoft Azure.
Usando uma SAS (assinatura de acesso compartilhado) para delegar acesso ao índice de blob. Para obter mais informações sobre assinaturas de acesso compartilhado, confira Conceder acesso limitado a recursos de Armazenamento do Azure usando SAS (assinaturas de acesso compartilhado).
Usando as chaves de acesso da conta para autorizar operações com a Chave compartilhada. Para obter mais informações, consulte Autorizar com Chave Compartilhada.
As marcas de índice de blob são um sub-recurso para os dados de blob. Um usuário com permissões ou um token de SAS para ler ou gravar blobs pode não ter acesso às marcas de índice de blob.
Controle de acesso baseado em função
Os chamadores usando uma identidade do Microsoft Entra podem receber as seguintes permissões para operar em marcas de índice de blob.
Operações de marca de índice de blob | Ação do RBAC do Microsoft Azure |
---|---|
Definir marcas de blob | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write |
Obter marcas de blob | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read |
Localizar blobs por marcas | 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 marca de índice. A função de 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 de SAS
Os chamadores que usam uma SAS (assinatura de acesso compartilhado) podem receber permissões no escopo para operar em marcas 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 marcas de índice de blob. As permissões de leitura (r
) e gravação (w
) de blob não são suficientes para permitir a leitura ou gravação de suas marcas de índice.
Permissão | Símbolo de URI | Operações permitidas |
---|---|---|
Marcas de índice | t | Obter e definir marcas de índice para um blob |
SAS de serviço para um contêiner
As permissões a seguir podem ser concedidas em uma SAS de serviço para um contêiner para permitir a filtragem em marcas de blob. A permissão lista de blob (i
) não é suficiente para permitir a filtragem de blobs por suas marcas de índice.
Permissão | Símbolo de URI | Operações permitidas |
---|---|---|
Marcas de índice | f | Localizar blobs com marcas de índice |
SAS de Conta
As permissões a seguir podem ser concedidas em uma SAS de Conta para permitir o acesso a marcas de índice de blob e filtragem em marcas de blob.
Permissão | Símbolo de URI | Operações permitidas |
---|---|---|
Marcas de índice | t | Obter e definir marcas de índice para um blob |
Marcas de índice | f | Localizar blobs com marcas de índice |
As permissões de leitura (r
) e gravação (w
) de blob sozinhas não são suficientes para permitir a leitura ou gravação de suas marcas de índice, e a permissão List (i
) não é suficiente para permitir a filtragem de blobs por suas marcas de índice.
Escolha entre marcas de índice de blobs e metadados
As marcas de índice de blob e os metadados fornecem a capacidade de armazenar propriedades de chave-valor, definidas pelo usuário, junto com um recurso de blob. Ambos podem ser recuperados e definidos diretamente, sem retornar ou alterar o conteúdo do blob. É possível usar as marcas de índice e de metadados.
Somente as marcas de índice são indexadas automaticamente e tornam-se pesquisáveis pelo serviço de armazenamento de blob nativo. Os metadados não podem ser indexados nativamente ou pesquisados. Você deve usar um serviço separado, como o Azure Search. Marcas de índice de blob têm permissões adicionais para leitura, filtragem e gravação que sã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 Obter blob e Obter propriedades de blob. Marcas 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 as marcas de índice de blob e os metadados:
Metadados | Marcas de índice do blob | |
---|---|---|
Limites | Nenhum limite numérico, total de 8 KB, não diferencia maiúsculas de minúsculas | Máximo de 10 marcas por blob, 768 bytes por marca, diferencia maiúsculas de minúsculas |
Atualizações | Não permitido na camada de arquivo, Set Blob Metadata substitui todos os metadados existentes, Set Blob Metadata altera a hora da última modificação do blob |
Permitido para todas as camadas de acesso, Set Blob Tags substitui todas as marcas existentes, Set Blob Tags não altera a hora da última modificação do blob |
Storage | Armazenado com os dados do blob | Sub-recurso dos dados do blob |
Indexação e Consulta | Você deve usar um serviço separado, como o Azure Search | Recursos de indexação e consulta incorporados ao Armazenamento de blob |
Criptografia | 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 marca de índice |
Resposta de cabeçalho | Metadados retornados como cabeçalhos em Get Blob e Get Blob Properties |
Contagem de marcas retornada por Get Blob ou Get Blob Properties , marcas retornadas somente por Get Blob Tags e List Blobs |
Permissões | As permissões de leitura ou gravação para dados de blob se estendem aos metadados | Permissões adicionais são necessárias para ler, filtrar ou gravar marcas de índice |
Nomenclatura | Os nomes de metadados devem seguir as regras de nomenclatura para identificadores C# | As marcas de índice de blob oferecem suporte a um intervalo mais amplo de caracteres alfanuméricos |
Preços
Você é cobrado pelo número médio mensal de marcas de índice em uma conta de armazenamento. Não há custo para o mecanismo de indexação. As solicitações para Definir Marcas de Blob, Obter Marcas de Blob e Encontrar Marcas de Blob são cobradas com base nas respectivas taxas de transação atuais. Observe que o número de transações de lista consumidas ao executar uma transação Encontrar Blobs por Marca é igual ao número de cláusulas na solicitação. Por exemplo, a consulta (StoreID = 100) equivale a uma transação de lista. A consulta (StoreID = 100 AND SKU = 10010) equivale a duas transações de lista. Para saber mais, consulte Preço de blob de blocos.
Suporte a recursos
O suporte para esse recurso pode ser afetado ao habilitar o Data Lake Storage Gen2, o protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou o protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você tiver habilitado qualquer um desses recursos, consulte o Suporte a recursos de Armazenamento de Blobs 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 comuns.
Há suporte apenas para contas v2 de uso geral e contas de blob de blocos Premium. Não há suporte para blob de páginas Premium, blob herdado e contas com um namespace hierárquico habilitado. Não haverá suporte para contas de uso geral v1.
O carregamento de blobs de páginas com marcas de índice não mantém as marcas. Defina as marcas depois de carregar um blob de páginas.
Se o controle de versão de blob estiver habilitado, ainda será possível usar marcas de índice na versão atual. As marcas de índice são preservadas para versões anteriores, mas elas não são passadas para o mecanismo de índice de blob, portanto, não é possível usá-las para recuperar versões anteriores. Se você promover uma versão anterior para a versão atual, as marcas dessa versão anterior se tornarão as marcas da versão atual. Como essas marcas estão associadas à versão atual, elas são passadas para o mecanismo de índice de blob e é possível consultá-las.
Não há API para determinar se as marcas de índice estão indexadas.
O gerenciamento do ciclo de vida é compatível com as verificações de igualdade com correspondência de índice de blob.
Copy Blob
não copia marcas de índice de blob do blob de origem para o novo blob de destino. Você pode especificar as marcas que deseja aplicar ao blob de destino durante a operação de cópia.
Perguntas frequentes
Consulte Perguntas frequentes sobre marcas de índice de Blob.
Próximas etapas
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.