Gestire e trovare i dati BLOB di Azure con tag di indice BLOB

Man mano che i set di dati diventano più grandi, la ricerca di un oggetto specifico in un mare di dati può risultare difficile. I tag di indice BLOB offrono funzionalità di gestione e individuazione dei dati usando gli attributi dei tag di indice chiave-valore. È possibile classificare e trovare oggetti all'interno di un singolo contenitore o in tutti i contenitori nell'account di archiviazione. Man mano che cambiano i requisiti dei dati, gli oggetti possono essere classificati dinamicamente aggiornando i tag di indice. Gli oggetti possono rimanere sul posto con l'organizzazione contenitore corrente.

I tag di indice BLOB consentono di:

  • Classificare dinamicamente i BLOB usando tag di indice chiave-valore

  • Trovare rapidamente BLOB con tag specifici in un intero account di archiviazione

  • Specificare i comportamenti condizionali per le API BLOB in base alla valutazione dei tag di indice

  • Usare tag di indice per controlli avanzati su funzionalità come la gestione del ciclo di vita dei BLOB

Si consideri uno scenario in cui sono presenti milioni di BLOB nell'account di archiviazione, a cui si accede da molte applicazioni diverse. Si vogliono trovare tutti i dati correlati da un singolo progetto. Non si è certi che cosa sia nell'ambito in quanto i dati possono essere distribuiti tra più contenitori con convenzioni di denominazione diverse. Tuttavia, le applicazioni caricano tutti i dati con tag in base al progetto. Anziché eseguire ricerche in milioni di BLOB e confrontare nomi e proprietà, è possibile usare Project = Contoso come criteri di individuazione. L'indice BLOB filtra tutti i contenitori nell'intero account di archiviazione per trovare e restituire rapidamente solo il set di 50 BLOB da Project = Contoso.

Per iniziare a usare esempi su come usare l'indice BLOB, vedere Usare i tag di indice BLOB per gestire e trovare i dati.

Tag di indice BLOB e gestione dei dati

I prefissi dei nomi blob e del contenitore sono le categorizzazioni unidimensionali. I tag di indice BLOB consentono la categorizzazione multidimensionale per i tipi di dati BLOB (Blocco, Accodamento o Pagina). La categorizzazione multidimensionale viene indicizzata in modo nativo da Archiviazione BLOB di Azure in modo da poter trovare rapidamente i dati.

Considerare i cinque BLOB seguenti nell'account di archiviazione:

  • container1/transaction.csv

  • container2/campaign.docx

  • photos/bannerphoto.png

  • archives/completed/2019review.pdf

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

Questi BLOB sono separati usando un prefisso di nome contenitore/cartella virtuale/BLOB. È possibile impostare un attributo tag di indice di Project = Contoso in questi cinque BLOB per classificarli insieme mantenendo l'organizzazione del prefisso corrente. L'aggiunta di tag di indice elimina la necessità di spostare i dati esponendo la possibilità di filtrare e trovare dati usando l'indice.

Impostazione dei tag di indice BLOB

I tag di indice BLOB sono attributi chiave-valore che possono essere applicati a oggetti nuovi o esistenti all'interno dell'account di archiviazione. È possibile specificare tag di indice durante il processo di caricamento usando operazioni Put BLOB, Put Block List o Copy Blob e l'intestazione facoltativa x-ms-tags . Se nell'account di archiviazione sono già presenti BLOB, chiamare Imposta tag BLOB passando un documento XML formattato con i tag di indice nel corpo della richiesta.

Importante

L'impostazione dei tag di indice BLOB può essere eseguita dal proprietario dei dati BLOB Archiviazione e da chiunque disponga di una firma di accesso condiviso che dispone dell'autorizzazione per accedere ai tag del BLOB (autorizzazione t SAS).

Inoltre, gli utenti con controllo degli accessi in base al ruolo con l'autorizzazione Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write possono eseguire questa operazione.

È possibile applicare un singolo tag al BLOB per descrivere al termine dell'elaborazione dei dati.

"processedDate" = '2020-01-01'

È possibile applicare più tag al BLOB per essere più descrittivi dei dati.

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

Per modificare gli attributi dei tag di indice esistenti, recuperare gli attributi di tag esistenti, modificare gli attributi del tag e sostituire con l'operazione Imposta tag BLOB. Per rimuovere tutti i tag di indice dal BLOB, chiamare l'operazione Set Blob Tags senza attributi di tag specificati. Poiché i tag di indice BLOB sono una sottorisorsa al contenuto dei dati BLOB, Set Blob Tags non modifica il contenuto sottostante e non modifica l'ora dell'ultima modifica o l'eTag del BLOB. È possibile creare o modificare i tag di indice per tutti i BLOB di base correnti. I tag di indice vengono mantenuti anche per le versioni precedenti, ma non vengono passati al motore di indicizzazione BLOB, quindi non è possibile eseguire query sui tag di indice per recuperare le versioni precedenti. Non è possibile modificare i tag per gli snapshot o i BLOB eliminati soft.Tags on snapshots or soft-deleted blobs cannot be modified.

I limiti seguenti si applicano ai tag di indice BLOB:

  • Ogni BLOB può avere fino a 10 tag di indice BLOB

  • I tasti tag devono essere compresi tra uno e 128 caratteri.

  • I valori dei tag devono essere compresi tra zero e 256 caratteri.

  • Le chiavi e i valori dei tag fanno distinzione tra maiuscole e minuscole.

  • Le chiavi e i valori dei tag supportano solo i tipi di dati stringa. Tutti i numeri, le date, le ore o i caratteri speciali vengono salvati come stringhe.

  • Se il controllo delle versioni è abilitato, i tag di indice vengono applicati a una versione specifica del BLOB. Se si impostano tag di indice nella versione corrente e viene creata una nuova versione, il tag non verrà associato alla nuova versione. Il tag verrà associato solo alla versione precedente.

  • Le chiavi e i valori dei tag devono rispettare le regole di denominazione seguenti:

    • Caratteri alfanumerici:

      • a - z (lettere minuscole)

      • A - Z (lettere maiuscole)

      • 0 - 9 (numeri)

    • Caratteri speciali validi: spazio, più, meno, punto, due punti, uguale, carattere di sottolineatura, barra ( +-.:=_/)

Recupero ed elenco di tag di indice BLOB

I tag di indice BLOB vengono archiviati come sottorisorsa insieme ai dati blob e possono essere recuperati in modo indipendente dal contenuto dei dati BLOB sottostanti. I tag di indice BLOB per un singolo BLOB possono essere recuperati con l'operazione Recupera tag BLOB. L'operazione Elenca BLOB con il include:tags parametro restituirà anche tutti i BLOB all'interno di un contenitore insieme ai relativi tag di indice BLOB.

Importante

Il recupero e l'elenco dei tag di indice BLOB possono essere eseguiti dal proprietario dei dati BLOB Archiviazione e da chiunque disponga di una firma di accesso condiviso con l'autorizzazione per accedere ai tag del BLOB (autorizzazione t sas).

Inoltre, gli utenti con controllo degli accessi in base al ruolo con l'autorizzazione Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read possono eseguire questa operazione.

Per tutti i BLOB con almeno un tag di indice BLOB, x-ms-tag-count viene restituito nelle operazioni List Blobs, Get Blob e Get Blob Properties che indicano il conteggio dei tag di indice nel BLOB.

Ricerca di dati tramite tag di indice BLOB

Il motore di indicizzazione espone gli attributi chiave-valore in un indice multidimensionale. Dopo aver impostato i tag di indice, sono presenti nel BLOB e possono essere recuperati immediatamente.

L'aggiornamento dell'indice BLOB potrebbe richiedere del tempo. Questo vale sia per l'aggiunta di tag che per la modifica di quelli esistenti. La quantità di tempo necessaria dipende dal carico di lavoro. Ad esempio, se un'operazione Imposta tag BLOB richiede 30 minuti per il completamento a una velocità da 15000 a 20000 transazioni al secondo, l'indicizzazione di tutti i BLOB può richiedere fino a 10 minuti. Con una frequenza inferiore, il ritardo di indicizzazione può essere inferiore a un secondo. La distribuzione del traffico influisce anche sui ritardi di indicizzazione. Ad esempio, se un'applicazione client imposta i tag nei BLOB in ordine sequenziale nello stesso contenitore, il ritardo potrebbe essere superiore a quello che sarebbe se i tag vengano applicati ai BLOB che non si trovano insieme.

Dopo l'aggiornamento dell'indice BLOB, è possibile usare le funzionalità di query e individuazione native offerte da Blob Archiviazione.

L'operazione Trova BLOB per tag consente di ottenere un set filtrato di BLOB i cui tag di indice corrispondono a una determinata espressione di query. Find Blobs by Tags supporta il filtro in tutti i contenitori all'interno dell'account di archiviazione oppure è possibile definire l'ambito del filtro in un solo contenitore. Poiché tutte le chiavi e i valori dei tag di indice sono stringhe, gli operatori relazionali usano un ordinamento lessicografico.

Importante

La ricerca di dati tramite i tag di indice BLOB può essere eseguita dal proprietario dei dati BLOB Archiviazione e da chiunque disponga di una firma di accesso condiviso con l'autorizzazione per trovare i BLOB in base ai tag (autorizzazione f SAS).

Inoltre, gli utenti con controllo degli accessi in base al ruolo con l'autorizzazione Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action possono eseguire questa operazione.

I criteri seguenti si applicano al filtro dell'indice BLOB:

  • Le chiavi tag devono essere racchiuse tra virgolette doppie (")

  • I valori dei tag e i nomi dei contenitori devono essere racchiusi tra virgolette singole (')

  • Il carattere @ è consentito solo per filtrare in base a un nome di contenitore specifico (ad esempio, @container = 'ContainerName')

  • I filtri vengono applicati con l'ordinamento lessicografico sulle stringhe

  • Le stesse operazioni dell'intervallo laterale sulla stessa chiave non sono valide (ad esempio, "Rank" > '10' AND "Rank" >= '15')

  • Quando si usa REST per creare un'espressione di filtro, i caratteri devono essere codificati con URI

  • Le query tag sono ottimizzate per la corrispondenza di uguaglianza usando un singolo tag (ad esempio StoreID = "100"). Anche le query di intervallo che usano un singolo tag che coinvolgono >, >=, <, <= sono efficienti. Qualsiasi query che usa AND con più tag non sarà altrettanto efficiente. Ad esempio, Cost > "01" AND Cost <= "100" is efficient. Il costo > "01 AND StoreID = "2" non è altrettanto efficiente.

La tabella seguente mostra tutti gli operatori validi per Find Blobs by Tags:

Operatore Descrizione Esempio
= Uguale "Status" = 'In Progress'
> Maggiore di "Date" > '2018-06-18'
>= Maggiore di o uguale a "Priority" >= '5'
< Minore di "Age" < '32'
<= Minore di o uguale a "Priority" <= '5'
E And logico "Rank" >= '010' AND "Rank" < '100'
@container Ambito di un contenitore specifico @container = 'videofiles' AND "status" = 'done'

Nota

Acquisire familiarità con l'ordinamento lessicografico durante l'impostazione e l'esecuzione di query sui tag.

  • I numeri vengono ordinati prima delle lettere. I numeri vengono ordinati in base alla prima cifra.
  • Le lettere maiuscole vengono ordinate prima delle lettere minuscole.
  • I simboli non sono standard. Alcuni simboli vengono ordinati prima dei valori numerici. Altri simboli vengono ordinati prima o dopo le lettere.

Operazioni blob condizionali con tag di indice BLOB

Nelle versioni REST 2019-10-10 e successive, la maggior parte delle API del servizio BLOB supporta ora un'intestazione condizionale, x-ms-if-tagsin modo che l'operazione abbia esito positivo solo se viene soddisfatta la condizione di indice BLOB specificata. Se la condizione non viene soddisfatta, si otterrà error 412: The condition specified using HTTP conditional header(s) is not met.

L'intestazione x-ms-if-tags può essere combinata con le altre intestazioni condizionali HTTP esistenti (If-Match, If-None-Match e così via). Se in una richiesta vengono fornite più intestazioni condizionali, tutte devono valutare true affinché l'operazione abbia esito positivo. Tutte le intestazioni condizionali vengono combinate in modo efficace con AND logico.

La tabella seguente mostra gli operatori validi per le operazioni condizionali:

Operatore Descrizione Esempio
= Equal "Status" = 'In Progress'
<> Not equal "Status" <> 'Done'
> Maggiore di "Date" > '2018-06-18'
>= Maggiore di o uguale a "Priority" >= '5'
< Minore di "Age" < '32'
<= Minore di o uguale a "Priority" <= '5'
E And logico "Rank" >= '010' AND "Rank" < '100'
OPPURE Or logico "Status" = 'Done' OR "Priority" >= '05'

Nota

Esistono due operatori aggiuntivi, non uguali e logici, che sono consentiti nell'intestazione condizionale x-ms-if-tags per le operazioni BLOB, ma non esistono nell'operazione Find Blobs by Tags .

Integrazioni della piattaforma con tag di indice BLOB

I tag di indice BLOB non solo consentono di classificare, gestire e cercare i dati blob, ma anche di fornire l'integrazione con altre funzionalità di Archiviazione BLOB, ad esempio la gestione del ciclo di vita.

Gestione ciclo di vita

Usando come blobIndexMatch filtro delle regole nella gestione del ciclo di vita, è possibile spostare i dati in livelli più sporadici o eliminare i dati in base ai tag di indice applicati ai BLOB. È possibile essere più granulari nelle regole e spostare o eliminare BLOB solo se corrispondono ai criteri dei tag specificati.

È possibile impostare una corrispondenza dell'indice BLOB come set di filtri autonomi in una regola del ciclo di vita per applicare azioni ai dati con tag. In alternativa, è possibile combinare un prefisso e un indice BLOB in modo che corrispondano a set di dati più specifici. Quando si specificano più filtri in una regola del ciclo di vita viene applicata un'operazione AND logica. L'azione verrà applicata solo se tutti i criteri di filtro corrispondono.

La regola di gestione del ciclo di vita di esempio seguente si applica ai BLOB in blocchi in un contenitore denominato videofiles. La regola consente di archiviare i BLOB nell'archivio solo se i dati corrispondono ai criteri dei tag dell'indice BLOB di "Status" == 'Processed' AND "Source" == 'RAW'.

Blob index match rule example for Lifecycle management in Azure portal

Autorizzazioni e autorizzazione

È possibile autorizzare l'accesso ai tag di indice BLOB usando uno degli approcci seguenti:

I tag di indice BLOB sono una sottorisorsa ai dati BLOB. Un utente con autorizzazioni o un token di firma di accesso condiviso per leggere o scrivere BLOB potrebbe non avere accesso ai tag di indice BLOB.

Controllo degli accessi in base al ruolo

Ai chiamanti che usano un'identità Microsoft Entra possono essere concesse le autorizzazioni seguenti per operare sui tag di indice BLOB.

Operazioni di tag dell'indice BLOB Azione controllo degli accessi in base al ruolo di Azure
Impostare tag BLOB Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/tags/write
Ottenere tag BLOB Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/tags/read
Trovare BLOB per tag Microsoft. Archiviazione/storageAccounts/blobServices/containers/blobs/filter/action

Per le operazioni sui tag di indice sono necessarie autorizzazioni aggiuntive, separate dai dati BLOB sottostanti. Al ruolo Proprietario dati BLOB Archiviazione vengono concesse le autorizzazioni per tutte e tre le operazioni sui tag di indice BLOB.

Autorizzazioni di firma di accesso condiviso

Ai chiamanti che usano una firma di accesso condiviso possono essere concesse autorizzazioni con ambito per operare sui tag di indice BLOB.

Firma di accesso condiviso del servizio per un BLOB

È possibile concedere le autorizzazioni seguenti in una firma di accesso condiviso del servizio per un BLOB per consentire l'accesso ai tag di indice BLOB. Le autorizzazioni di lettura blob (r) e scrittura (w) da sole non sono sufficienti per consentire la lettura o la scrittura dei relativi tag di indice.

Autorizzazione Simbolo URI Operazioni consentite
Tag di indice t Ottenere e impostare i tag di indice per un BLOB

Firma di accesso condiviso del servizio per un contenitore

È possibile concedere le autorizzazioni seguenti in una firma di accesso condiviso del servizio per un contenitore per consentire il filtro sui tag BLOB. L'autorizzazione dell'elenco BLOB (i) non è sufficiente per consentire il filtro dei BLOB in base ai tag di indice.

Autorizzazione Simbolo URI Operazioni consentite
Tag di indice f Trovare BLOB con tag di indice

Firma di accesso condiviso dell'account

È possibile concedere le autorizzazioni seguenti in una firma di accesso condiviso dell'account per consentire l'accesso ai tag di indice BLOB e filtrare i tag BLOB.

Autorizzazione Simbolo URI Operazioni consentite
Tag di indice t Ottenere e impostare i tag di indice per un BLOB
Tag di indice f Trovare BLOB con tag di indice

Le autorizzazioni blob di lettura (r) e scrittura (w) da sole non sono sufficienti per consentire la lettura o la scrittura dei tag di indice e l'autorizzazione elenco (i) non è sufficiente per consentire il filtro dei BLOB in base ai tag di indice.

Scelta tra i metadati e i tag di indice BLOB

Sia i tag di indice BLOB che i metadati consentono di archiviare proprietà chiave-valore arbitrarie definite dall'utente insieme a una risorsa BLOB. Entrambi possono essere recuperati e impostati direttamente, senza restituire o modificare il contenuto del BLOB. È possibile usare sia i metadati che i tag di indice.

Solo i tag di indice vengono indicizzati automaticamente e resi ricercabili dal servizio blob nativo Archiviazione. I metadati non possono essere indicizzati in modo nativo o ricercati. È necessario usare un servizio separato, ad esempio Ricerca di Azure. I tag di indice BLOB dispongono di autorizzazioni aggiuntive per la lettura, il filtro e la scrittura separati dai dati BLOB sottostanti. I metadati usano le stesse autorizzazioni del BLOB e vengono restituiti come intestazioni HTTP dalle operazioni Get Blob e Get Blob Properties. I tag di indice BLOB vengono crittografati inattivi usando una chiave gestita da Microsoft. I metadati vengono crittografati inattivi usando la stessa chiave di crittografia specificata per i dati BLOB.

La tabella seguente riepiloga le differenze tra i metadati e i tag di indice BLOB:

Metadati UFX Tag indice del BLOB
Limiti Nessun limite numerico, totale di 8 KB, senza distinzione tra maiuscole e minuscole 10 tag per BLOB max, 768 byte per tag, con distinzione tra maiuscole e minuscole
Aggiornamenti Non consentito nel livello archivio, Set Blob Metadata sostituisce tutti i metadati esistenti, Set Blob Metadata modifica l'ora dell'ultima modifica del BLOB Consentito per tutti i livelli di accesso, Set Blob Tags sostituisce tutti i tag esistenti, Set Blob Tags non modifica l'ora dell'ultima modifica del BLOB
Storage Archiviato con i dati DEL BLOB Sottorisorsa dei dati BLOB
Indicizzazione e query Deve usare un servizio separato, ad esempio Ricerca di Azure Funzionalità di indicizzazione e query integrate in Archiviazione BLOB
Crittografia Crittografato inattivo con la stessa chiave di crittografia usata per i dati BLOB Crittografia dei dati inattivi con una chiave di crittografia gestita da Microsoft
Prezzi Le dimensioni dei metadati sono incluse nei costi di archiviazione per un BLOB Costo fisso per tag di indice
Risposta intestazione Metadati restituiti come intestazioni in Get Blob e Get Blob Properties Numero di tag restituiti da Get Blob o Get Blob Properties, i tag restituiti solo da Get Blob Tags e List Blobs
Autorizzazioni Le autorizzazioni di lettura o scrittura per i dati BLOB si estendono ai metadati Sono necessarie autorizzazioni aggiuntive per leggere, filtrare o scrivere tag di indice
Denominazione I nomi dei metadati devono rispettare le regole di denominazione per gli identificatori C# I tag di indice BLOB supportano un intervallo più ampio di caratteri alfanumerici

Prezzi

Viene addebitato il numero medio mensile di tag di indice all'interno di un account di archiviazione. Non sono previsti costi per il motore di indicizzazione. Le richieste per impostare i tag BLOB, ottenere i tag BLOB e trovare i tag BLOB vengono addebitate alle rispettive tariffe delle transazioni correnti. Si noti che il numero di transazioni di elenco utilizzate durante l'esecuzione di una transazione Trova BLOB per tag è uguale al numero di clausole nella richiesta. Ad esempio, la query (StoreID = 100) è una transazione di elenco. La query (StoreID = 100 AND SKU = 10010) è due transazioni di elenco. Per altre informazioni, vedere Prezzi dei BLOB in blocchi.

Supporto funzionalità

Il supporto per questa funzionalità potrebbe essere influenzato dall'abilitazione del protocollo Data Lake Archiviazione Gen2, NFS (Network File System) 3.0 o del protocollo SFTP (SSH File Transfer Protocol). Se è stata abilitata una di queste funzionalità, vedere Supporto delle funzionalità di Archiviazione BLOB negli account Archiviazione di Azure per valutare il supporto per questa funzionalità.

Condizioni e problemi noti

In questa sezione vengono descritti i problemi noti e le condizioni.

  • Sono supportati solo gli account per utilizzo generico v2 e gli account BLOB in blocchi Premium. BLOB di pagine Premium, BLOB legacy e account con uno spazio dei nomi gerarchico abilitato non sono supportati. Gli account per utilizzo generico v1 non saranno supportati.

  • Il caricamento di BLOB di pagine con tag di indice non rende persistenti i tag. Impostare i tag dopo il caricamento di un BLOB di pagine.

  • Se il controllo delle versioni dell'archiviazione BLOB è abilitato, è comunque possibile usare i tag di indice nella versione corrente. I tag di indice vengono mantenuti per le versioni precedenti, ma tali tag non vengono passati al motore di indicizzazione BLOB, quindi non è possibile usarli per recuperare le versioni precedenti. Se si alza di livello una versione precedente alla versione corrente, i tag di tale versione precedente diventano i tag della versione corrente. Poiché questi tag sono associati alla versione corrente, vengono passati al motore di indicizzazione BLOB ed è possibile eseguirne una query.

  • Non esiste alcuna API per determinare se i tag di indice sono indicizzati.

  • La gestione del ciclo di vita supporta solo i controlli di uguaglianza con la corrispondenza dell'indice BLOB.

  • Copy Blob non copia i tag di indice BLOB dal BLOB di origine al nuovo BLOB di destinazione. È possibile specificare i tag da applicare al BLOB di destinazione durante l'operazione di copia.

Domande frequenti

Vedere Domande frequenti su tag di indice BLOB.

Passaggi successivi

Per un esempio di come usare l'indice BLOB, vedere Usare l'indice BLOB per gestire e trovare i dati.

Informazioni sulla gestione del ciclo di vita e sull'impostazione di una regola con la corrispondenza degli indici BLOB.