Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs

A medida que los conjuntos de datos crecen, buscar un objeto específico en un mar de datos puede resultar difícil. Las etiquetas de índice de blob proporcionan funcionalidades de administración y detección de datos mediante atributos de etiquetas de índice de clave-valor. Puede clasificar y buscar objetos en un único contenedor o en todos los contenedores de su cuenta de almacenamiento. A medida que cambian los requisitos de datos, los objetos se pueden clasificar dinámicamente mediante la actualización de sus etiquetas de índice. Los objetos pueden permanecer en contexto con su organización de contenedores actual.

Las etiquetas de índice de blobs le permiten:

  • Categorizar dinámicamente los blobs mediante etiquetas de índice de clave-valor

  • Buscar rápidamente de blobs etiquetados específicos en toda una cuenta de almacenamiento

  • Especificar comportamientos condicionales para las API de blobs en función de la evaluación de etiquetas de índice

  • Usar etiquetas de índice para controles avanzados de las características, como la administración del ciclo de vida de los blobs

Considere un escenario en el que tiene millones de blobs en su cuenta de almacenamiento, donde son muchas aplicaciones diferentes las que acceden a ellos. Quiere buscar todos los datos relacionados de un único proyecto. No está seguro del ámbito exacto, ya que los datos pueden estar distribuidos entre varios contenedores con distintas convenciones de nomenclatura. Sin embargo, las aplicaciones cargan todos los datos con etiquetas basadas en el proyecto. En lugar de buscar a través de millones de blobs y comparar nombres y propiedades, puede usar Project = Contoso como criterio de detección. El índice de blobs filtrará todos los contenedores en toda la cuenta de almacenamiento para buscar y devolver rápidamente solo el conjunto de 50 blobs de Project = Contoso.

Para empezar a trabajar con ejemplos sobre cómo usar el índice de blobs, consulte Uso de etiquetas de índice de blobs para administrar y buscar datos.

Etiquetas y administración de datos del índice de blobs

Los prefijos de nombre de contenedores y blobs son una categorización unidimensional. Las etiquetas de índice de blobs permiten la categorización multidimensional para tipos de datos de blobs (bloque, anexo o página). Azure Blob Storage indexa la categorización multidimensional de forma nativa para que usted pueda encontrar los datos rápidamente.

Considere los siguientes cinco blobs en su cuenta de almacenamiento:

  • container1/transaction.csv

  • container2/campaign.docx

  • photos/bannerphoto.png

  • archives/completed/2019review.pdf

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

Estos blobs se separan mediante un prefijo de contenedor/carpeta virtual/nombre de blob. Puede establecer un atributo de etiqueta de índice de Project = Contoso en estos cinco blobs para categorizarlos juntos, a la vez que mantiene su organización de prefijos actual. Agregar etiquetas de índice elimina la necesidad de mover los datos al exponer la capacidad de filtrar y buscar datos mediante el índice.

Configuración de las etiquetas del índice de blobs

Las etiquetas del índice de blobs son atributos de clave-valor que se pueden aplicar a objetos nuevos o existentes dentro de la cuenta de almacenamiento. Puede especificar etiquetas de índice durante el proceso de carga mediante las operaciones Put Blob, Put Block List o Copy Blob y el encabezado x-ms-tags opcional. Si ya tiene blobs en la cuenta de almacenamiento, llame a SetBlobTags pasando un documento XML con formato con las etiquetas de índice en el cuerpo de la solicitud.

Importante

El propietario de datos de blobs de almacenamiento, así como cualquier persona con una firma de acceso compartido que tenga permiso para acceder a las etiquetas de blobs (el permiso t de SAS), puede establecer las etiquetas de índice de blobs.

Además, los usuarios de RBAC con el permiso Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write pueden realizar esta operación.

Puede aplicar una única etiqueta al blob para describir cuándo se han terminado de procesar los datos.

"processedDate" = '2020-01-01'

Puede aplicar varias etiquetas en el blob para una mayor descripción de los datos.

"Project" = 'Contoso' "Classified" = 'True' "Status" = 'Unprocessed' "Priority" = '01'

Para modificar los atributos existentes de las etiquetas de índice, recupere los atributos existentes las etiquetas, modifique los atributos de las etiquetas y reemplace por la operación Set Blob Tags. Para quitar todas las etiquetas de índice del blob, llame a la operación Set Blob Tags sin especificar atributos de etiqueta. Como las etiquetas de índice de blobs son un subrecurso del contenido de los datos del blob, Set Blob Tags no modifica ningún contenido subyacente y no cambia la hora de la última modificación ni ETag del blob. Puede crear o modificar las etiquetas de índice para todos los blobs base actuales. Las etiquetas de índice también se conservan para las versiones anteriores, pero no se pasan al motor de índice de blobs, por lo que no se pueden consultar etiquetas de índice para recuperar versiones anteriores. Las etiquetas de las instantáneas o los blobs eliminados temporalmente no se pueden modificar.

Los límites siguientes se aplican a las etiquetas del índice de blobs:

  • Cada blob puede tener hasta 10 etiquetas de índice del blob

  • Las claves de etiqueta deben tener entre 1 y 128 caracteres.

  • Los valores de etiqueta deben tener entre 0 y 256 caracteres.

  • Las claves y los valores de etiqueta distinguen mayúsculas de minúsculas.

  • Las claves y los valores de etiqueta solo admiten tipos de datos de cadena. Los números, las fechas, las horas o los caracteres especiales se guardan como cadenas.

  • Si está habilitado el control de versiones, se aplican las etiquetas de índice a una versión específica del blob. Si establece etiquetas de índice en la versión actual y se crea una versión, la etiqueta no se asociará a la nueva versión. La etiqueta solo se asociará a la versión anterior.

  • Las claves y los valores de etiqueta deben cumplir las siguientes reglas de nomenclatura:

    • Caracteres alfanuméricos:

      • a a la z (letras minúsculas)

      • A a la Z (letras mayúsculas)

      • 0 a 9 (números)

    • Caracteres especiales válidos: espacio, más, menos, punto, dos puntos, igual, guion bajo, barra diagonal ( +-.:=_/)

Sugerencia

Puede usar una tarea de almacenamiento para establecer etiquetas en objetos a gran escala en varias cuentas de almacenamiento en función de un conjunto de condiciones que defina. Una tarea de almacenamiento es un recurso disponible en Acciones de almacenamiento de Azure; un marco sin servidor que puede usar para realizar operaciones de datos comunes en millones de objetos en varias cuentas de almacenamiento. Para más información, consulte ¿Qué es Acciones de almacenamiento de Azure?

Obtención y enumeración de etiquetas de índice de blobs

Las etiquetas de índice de blobs se almacenan como subrecurso junto con los datos de blobs y se pueden recuperar independientemente del contenido subyacente de los datos del blob. Las etiquetas de índice de blobs para un único blob se pueden recuperar con la operación Get Blob Tags. La operación List Blobs con el parámetro include:tags también devolverá todos los blobs de un contenedor, junto con las etiquetas de índice de blobs.

Importante

El propietario de datos de blobs de almacenamiento, así como cualquier persona con una firma de acceso compartido que tenga permiso para acceder a las etiquetas de blobs (el permiso t de SAS), puede obtener y enumerar las etiquetas de índice de blobs.

Además, los usuarios de RBAC con el permiso Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read pueden realizar esta operación.

En el caso de los blobs con al menos una etiqueta de índice de blob, se devuelve x-ms-tag-count en las operaciones List Blobs, Get Blob y Get Blob Properties, lo que indica que el recuento de etiquetas de índice del blob.

Búsqueda de datos mediante etiquetas de índice de blobs

El motor de indexación expone esos atributos de clave-valor en un índice multidimensional. Después de establecer las etiquetas de índice, existen en el blob y se pueden recuperar de inmediato.

El índice de blobs puede tardar algún tiempo en actualizarse. Esto se aplica a agregar etiquetas y editar las que ya existen. La cantidad de tiempo necesaria depende de la carga de trabajo. Por ejemplo, si la operación Establecer etiquetas de blob tarda 30 minutos en completarse a una velocidad de 15 000 a 20 000 transacciones por segundo, puede tardar hasta 10 minutos en indexar todos esos blobs. A una velocidad inferior, el retraso de indexación puede estar por debajo de un segundo. La distribución del tráfico también afecta a los retrasos de indexación. Por ejemplo, si una aplicación cliente establece etiquetas en blobs en orden secuencial en el mismo contenedor, el retraso podría ser mayor que si las etiquetas se aplican a blobs que no se encuentran juntos.

Después de actualizado el índice de blobs, puede aprovechar las funcionalidades nativas de consulta y detección que ofrece Blob Storage.

La operación Find Blobs By Tags le permite obtener un conjunto filtrado de blobs cuyas etiquetas de índice coinciden con una expresión de consulta determinada. Find Blobs by Tags admite el filtrado entre todos los contenedores de la cuenta de almacenamiento, o puede limitar el filtrado a un único contenedor. Dado que todas las claves y valores de las etiquetas de índice son cadenas, los operadores relacionales usan una ordenación lexicográfica.

Importante

El propietario de datos de blobs de almacenamiento, así como cualquier persona con una firma de acceso compartido que tenga permiso para buscar los blobs por etiquetas (el permiso f de SAS), puede buscar datos mediante etiquetas de índice de blobs.

Además, los usuarios de RBAC con el permiso Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action pueden realizar esta operación.

Los criterios siguientes se aplican al filtrado de índices de blobs:

  • Las claves de etiqueta deben ir entre comillas dobles (").

  • Los valores de etiqueta y los nombres de contenedor deben ir entre comillas simples (').

  • El carácter @ solo se permite para filtrar por nombre de un contenedor específico (por ejemplo, @container = 'ContainerName').

  • Los filtros se aplican con la ordenación lexicográfica a las cadenas.

  • Las operaciones de intervalo del mismo lado en la misma clave no son válidas (por ejemplo, "Rank" > '10' AND "Rank" >= '15').

  • Al usar REST para crear una expresión de filtro, los caracteres deben estar codificados por URI.

  • Las consultas de etiquetas están optimizadas para las coincidencias de igualdad de una sola etiqueta (por ejemplo, StoreID = "100"). Las consultas de intervalo que usan una sola etiqueta que incluye >, >=, < y <= también son eficaces. Cualquier consulta que use AND con más de una etiqueta no será tan eficaz. Por ejemplo, Cost > "01" AND Cost <= "100" es eficaz. Cost > "01 AND StoreID = "2" no es tan eficaz.

En la tabla siguiente se muestran todos los operadores válidos para Find Blobs by Tags:

Operador Descripción Ejemplo
= Igual "Status" = 'In Progress'
> Mayor que "Date" > '2018-06-18'
>= Mayor o igual que "Priority" >= '5'
< Menor que "Age" < '32'
<= Menor o igual que "Priority" <= '5'
y Y lógico "Rank" >= '010' AND "Rank" < '100'
@container Ámbito de un contenedor específico @container = 'videofiles' AND "status" = 'done'

Nota:

Familiarícese con la ordenación lexicográfica al establecer y realizar consultas en etiquetas.

  • Los números se ordenan antes que las letras. Los números se ordenan en función del primer dígito.
  • Las mayúsculas se ordenan antes que las minúsculas.
  • Los símbolos no son estándar. Algunos símbolos se ordenan antes que los valores numéricos. Otros símbolos se ordenan antes o después que las letras.

Operaciones de blob condicionales con etiquetas de índice de blobs

En las versiones de REST 2019-10-10 y posteriores, la mayoría de las API de Blob service ahora admiten un encabezado condicional, x-ms-if-tags, de modo que la operación solo se completará correctamente si se cumple la condición especificada del índice de blobs. Si no se cumple la condición, obtendrá error 412: The condition specified using HTTP conditional header(s) is not met.

El encabezado x-ms-if-tags puede combinarse con los demás encabezados condicionales HTTP existentes (If-Match, If-None-Match, etc.). Si en una solicitud se proporcionan varios encabezados condicionales, todos deben evaluarse como verdaderos para que la operación se complete correctamente. Todos los encabezados condicionales se combinan eficazmente con AND lógico.

En la tabla siguiente se muestran los operadores válidos para las operaciones condicionales:

Operador Descripción Ejemplo
= Es igual a "Status" = 'In Progress'
<> No igual a "Status" <> 'Done'
> Mayor que "Date" > '2018-06-18'
>= Mayor o igual que "Priority" >= '5'
< Menor que "Age" < '32'
<= Menor o igual que "Priority" <= '5'
y Y lógico "Rank" >= '010' AND "Rank" < '100'
O BIEN OR lógico "Status" = 'Done' OR "Priority" >= '05'

Nota:

Hay dos operadores adicionales, Not Equal y OR lógico, que se permiten en el encabezado x-ms-if-tags condicional para la operación de blobs, pero no existen en la operación Find Blobs by Tags.

Integraciones de la plataforma con etiquetas de índice de blobs

Las etiquetas del Índice de blobs no solo le ayudan a categorizar, administrar y buscar en los datos de blobs, sino que también proporcionan integraciones con otras características de Blob Storage, como la administración del ciclo de vida.

Administración del ciclo de vida

Con blobIndexMatch como filtro de reglas en la administración del ciclo de vida, puede mover los datos a los niveles de acceso esporádico o eliminar los datos en función de las etiquetas de índice aplicadas a los blobs. Puede obtener una mayor granularidad en las reglas y solo mover o eliminar blobs si coinciden con los criterios de etiquetas especificados.

Puede establecer una coincidencia del índice de blobs como un conjunto de filtros independiente en una regla del ciclo de vida para aplicar acciones a los datos etiquetados. O bien, puede combinar tanto un prefijo como un índice de blobs para que coincidan con conjuntos de datos más específicos. Al especificar varios filtros en una regla de ciclo de vida se aplica una operación AND lógica. La acción solo se aplicará si coinciden todos los criterios de filtro.

El siguiente ejemplo de regla de administración del ciclo de vida se aplica a los blobs en bloques en un contenedor denominado videofiles. La regla segmenta los blobs al almacenamiento de archivos solo si los datos coinciden con los criterios de las etiquetas de índice de blobs de "Status" == 'Processed' AND "Source" == 'RAW'.

Ejemplo de regla de coincidencia del índice de blobs para la administración del ciclo de vida en Azure Portal

Permisos y autorización

Puede autorizar el acceso a las etiquetas de índice de blobs mediante uno de los métodos siguientes:

Las etiquetas de índice de blobs son un subrecurso de los datos de blobs. Un usuario con permisos o un token de SAS para leer o escribir blobs puede no tener acceso a las etiquetas de índice de blobs.

Control de acceso basado en rol

A los autores de llamadas que usan una identidad de Microsoft Entra se les pueden conceder los permisos siguientes para operar con etiquetas de índice de blobs.

Operaciones de etiquetas de índice de blobs Acción de RBAC de Azure
Establecer etiquetas de blobs Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
Obtener etiquetas de blobs Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
Buscar blobs por etiquetas Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action

Se requieren permisos adicionales independientes de los datos de blobs subyacentes para las operaciones con etiquetas de índice. El rol propietario de datos de blobs de almacenamiento tiene permisos para las tres operaciones de etiquetas de índice de blobs.

Permisos de SAS

A los autores de llamadas que usan una firma de acceso compartido (SAS) se les puede conceder permisos limitados para operar con etiquetas de índice de blobs.

SAS de servicio para un blob

Se pueden conceder los siguientes permisos en una SAS de servicio para que un blob permita el acceso a etiquetas de índice de blob. Los permisos de lectura (r) y escritura (w) de blobs por sí solos no son suficientes para permitir la lectura o escritura en sus etiquetas de índice.

Permiso Símbolo de URI Operaciones permitidas
Etiquetas de índice t Obtener y establecer etiquetas de índice para un blob

SAS de servicio para un contenedor

Se pueden conceder los siguientes permisos en una SAS de servicio para que un contenedor permita el filtrado de etiquetas de blob. El permiso de lista de blobs (i) no es suficiente para permitir el filtrado de blobs por sus etiquetas de índice.

Permiso Símbolo de URI Operaciones permitidas
Etiquetas de índice f Buscar blobs con etiquetas de índice

SAS de cuenta

Se pueden conceder los permisos siguientes en una SAS de cuenta para permitir el acceso a las etiquetas de índice de blob y el filtrado de etiquetas de blob.

Permiso Símbolo de URI Operaciones permitidas
Etiquetas de índice t Obtener y establecer etiquetas de índice para un blob
Etiquetas de índice f Buscar blobs con etiquetas de índice

Los permisos de lectura (r) y escritura (w) de blobs por sí solos no son suficientes para permitir la lectura o escritura de sus etiquetas de índice, y el permiso de lista (i) no basta para permitir el filtrado de blobs por sus etiquetas de índice.

Elección entre metadatos y etiquetas de índice de blobs

Tanto los metadatos como las etiquetas de índice de blobs ofrecen la capacidad de almacenar propiedades arbitrarias de clave-valor definidas por el usuario, junto con un recurso de blob. Ambos se pueden recuperar y establecer directamente, sin devolver ni modificar el contenido del blob. Es posible usar tanto los metadatos como las etiquetas de índice.

Solo las etiquetas de índice se indexan automáticamente y se pueden consultar mediante el servicio nativo de Blob Storage. Los metadatos no se pueden indexar ni consultar de forma nativa. Debe usar un servicio independiente, como Azure Search. Las etiquetas de índice de blobs tienen permisos adicionales de lectura, filtrado y escritura que son independientes de los datos del blob subyacentes. Los metadatos usan los mismos permisos que el blob y se devuelven como encabezados HTTP en las operaciones Get Blob y Get Blob Properties. Las etiquetas de índice de blobs se cifran en reposo mediante una clave administradas por Microsoft. Los metadatos se cifran en reposo con la misma clave de cifrado especificada para los datos de blobs.

En la tabla siguiente se resumen las diferencias entre los metadatos y las etiquetas de índice de blobs:

Metadatos Etiquetas de índice de blobs
Límites Sin límite numérico, 8 KB en total, no distingue mayúsculas de minúsculas 10 etiquetas por blob máx., 768 bytes por etiqueta, distingue mayúsculas de minúsculas
Actualizaciones No se permiten en el nivel de archivo, Set Blob Metadata reemplaza todos los metadatos existentes, Set Blob Metadata cambia la hora de la última modificación del blob. Se permiten para los niveles de acceso, Set Blob Tags reemplaza todas las etiquetas existentes, Set Blob Tags no cambia la hora de la última modificación del blob.
Storage Se almacenan con los datos del blob Subrecurso de los datos de blobs
Indexación y consulta Debe usar un servicio independiente, como Azure Search Funcionalidades nativas de indexación y consulta integradas en Blob Storage
Cifrado Cifrado en reposo con la misma clave de cifrado que se usa para los datos del blob Cifrado en reposo con una clave de cifrado administrada por Microsoft
Precios El tamaño de los metadatos se incluye en los costos de almacenamiento de un blob Costo fijo por etiqueta de índice
Respuesta del encabezado Metadatos devueltos como encabezados en Get Blob y Get Blob Properties Recuento de etiquetas devuelto por Get Blob o Get Blob Properties, etiquetas devueltas solo por Get Blob Tags y List Blobs
Permisos Los permisos de lectura o escritura para los datos del blob se extienden a los metadatos Se requieren permisos adicionales para leer, filtrar o escribir etiquetas de índice
Nomenclatura Los nombres de metadatos deben cumplir las reglas de nomenclatura para los identificadores de C#. Las etiquetas de índice de blobs admiten una mayor variedad de caracteres alfanuméricos.

Precios

Se le cobrará por el número promedio mensual de etiquetas de índice en una cuenta de almacenamiento. El motor de indexación no tiene ningún costo. Las solicitudes para establecer las etiquetas de blog, obtenerlas o buscarlas se cobran según las tarifas de transacción correspondientes actuales. Tenga en cuenta que el número de transacciones de lista consumidas al realizar una transacción para buscar blobs por etiqueta es igual al número de cláusulas de la solicitud. Por ejemplo, la consulta (StoreID = 100) es una transacción de lista. La consulta (StoreID = 100 AND SKU = 10010) son dos transacciones de lista. Para obtener más información, consulte Precios de los blobs en bloques.

Compatibilidad de características

La compatibilidad con esta característica puede verse afectada al habilitar Data Lake Storage Gen2, el protocolo Network File System (NFS) 3.0 o el Protocolo de transferencia de archivos SSH (SFTP). Si ha habilitado cualquiera de estas funcionalidades, consulte Compatibilidad con características de Blob Storage en cuentas de Azure Storage para evaluar la compatibilidad con esta característica.

Condiciones y problemas conocidos

En esta sección se describen problemas y condiciones conocidos.

  • Solo se admiten cuentas de uso general v2 y cuentas prémium de almacenamiento de blobs en bloques. No se admiten cuentas prémium de blobs en páginas, blobs heredados ni cuentas con un espacio de nombres jerárquico habilitado. No se admitirán cuentas de uso general v1.

  • La carga de blobs en páginas con etiquetas de índice no conserva las etiquetas. Establezca las etiquetas después de cargar un blob en páginas.

  • Si está habilitado el control de versiones de blob, puede seguir utilizando etiquetas de índice en la versión actual. Las etiquetas de índice se conservan para las versiones anteriores, pero esas etiquetas no se pasan al motor de índice de blobs, por lo que no se pueden usar para recuperar versiones anteriores. Si promueve una versión anterior a la actual, las etiquetas de esa versión anterior se convierten en las de la versión actual. Como esas etiquetas están asociadas a la versión actual, se pasan al motor de índice de blobs y se pueden consultar.

  • No hay ninguna API para determinar si las etiquetas de índice están indizadas.

  • La administración del ciclo de vida solo admite comprobaciones de igualdad con coincidencia del índice de blobs.

  • Copy Blob no copia las etiquetas de índice de blobs del blob de origen en el nuevo blob de destino. Puede especificar las etiquetas que desea que se apliquen al blob de destino durante la operación de copia.

Preguntas más frecuentes

Consulte las preguntas frecuentes de etiquetas de índice de blobs.

Pasos siguientes

Para ver un ejemplo de cómo se usa el índice de blobs, consulte Uso del índice de blobs para administrar y buscar datos.

Obtenga información sobre la administración del ciclo de vida y establezca una regla con coincidencia de índice de blobs.