Hantera och hitta Azure Blob-data med blobindextaggar

När datamängderna blir större kan det vara svårt att hitta ett specifikt objekt i ett hav av data. Blobindextaggar tillhandahåller funktioner för datahantering och identifiering med hjälp av indextatribut för nyckelvärde. Du kan kategorisera och hitta objekt i en enda container eller i alla containrar i ditt lagringskonto. När datakraven ändras kan objekt kategoriseras dynamiskt genom att deras indextaggar uppdateras. Objekt kan förbli på plats med sin aktuella containerorganisation.

Med blobindextaggar kan du:

  • Kategorisera dina blobar dynamiskt med hjälp av nyckel/värde-indextaggar

  • Hitta snabbt specifika taggade blobar i ett helt lagringskonto

  • Ange villkorsstyrda beteenden för blob-API:er baserat på utvärderingen av indextaggar

  • Använda indextaggar för avancerade kontroller för funktioner som hantering av bloblivscykel

Tänk dig ett scenario där du har miljontals blobar i ditt lagringskonto som används av många olika program. Du vill hitta alla relaterade data från ett enda projekt. Du är inte säker på vad som finns i omfånget eftersom data kan spridas över flera containrar med olika namngivningskonventioner. Men dina program laddar upp alla data med taggar baserat på deras projekt. I stället för att söka igenom miljontals blobar och jämföra namn och egenskaper kan du använda Project = Contoso som identifieringsvillkor. Blob-index filtrerar alla containrar över hela lagringskontot för att snabbt hitta och returnera bara uppsättningen med 50 blobar från Project = Contoso.

Information om hur du kommer igång med exempel på hur du använder blobindex finns i Använda blobindextaggar för att hantera och hitta data.

Blobindextaggar och datahantering

Container- och blobnamnprefix är endimensionella kategoriseringar. Blobindextaggar tillåter flerdimensionell kategorisering för blobdatatyper (Block, Tillägg eller Sida). Flerdimensionell kategorisering indexeras internt av Azure Blob Storage så att du snabbt kan hitta dina data.

Överväg följande fem blobar i ditt lagringskonto:

  • container1/transaction.csv

  • container2/campaign.docx

  • foton/bannerphoto.png

  • archives/completed/2019review.pdf

  • loggar/2020/01/01/logfile.txt

Dessa blobar avgränsas med ett prefix för container/virtuell mapp/blobnamn. Du kan ange ett indextaggattribut Project = Contoso för på dessa fem blobar för att kategorisera dem tillsammans samtidigt som deras nuvarande prefixorganisation bibehålls. Att lägga till indextaggar eliminerar behovet av att flytta data genom att exponera möjligheten att filtrera och hitta data med hjälp av indexet.

Ange blobindextaggar

Blobindextaggar är nyckelvärdesattribut som kan tillämpas på nya eller befintliga objekt i ditt lagringskonto. Du kan ange indextaggar under uppladdningsprocessen med hjälp av åtgärderna Put Blob, Put Block List eller Copy Blob och det valfria x-ms-tags huvudet. Om du redan har blobar i ditt lagringskonto anropar du Ange blobtaggar som skickar ett formaterat XML-dokument med indextaggar i brödtexten i begäran.

Viktigt!

Att ange blobindextaggar kan utföras av lagringsblobdataägaren och av alla som har en signatur för delad åtkomst som har behörighet att komma åt blobens taggar (SAS-behörigheten t ).

Dessutom kan RBAC-användare med behörighet utföra Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write den här åtgärden.

Du kan använda en enskild tagg på din blob för att beskriva när dina data har bearbetats.

"processedDate" = '2020-01-01'

Du kan använda flera taggar på din blob för att vara mer beskrivande för data.

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

Om du vill ändra de befintliga indextaggattributen hämtar du de befintliga taggattributen, ändrar taggattributen och ersätter med åtgärden Ange blobtaggar . Om du vill ta bort alla indextaggar från bloben anropar du Set Blob Tags åtgärden utan angivna taggattribut. Eftersom blobindextaggar är en underkälla till blobdatainnehållet ändrar Set Blob Tags inte något underliggande innehåll och ändrar inte blobens senaste ändringstid eller eTag. Du kan skapa eller ändra indextaggar för alla aktuella basblobar. Indextaggar bevaras också för tidigare versioner, men de skickas inte till blobindexmotorn, så du kan inte köra frågor mot indextaggar för att hämta tidigare versioner. Det går inte att ändra taggar på ögonblicksbilder eller mjuk borttagna blobar.

Följande gränser gäller för blobindextaggar:

  • Varje blob kan ha upp till 10 blobindextaggar

  • Taggnycklar måste vara mellan ett och 128 tecken.

  • Taggvärdena måste vara mellan noll och 256 tecken.

  • Taggnycklar och -värden är skiftlägeskänsliga.

  • Taggnycklar och -värden stöder endast strängdatatyper. Tal, datum, tider eller specialtecken sparas som strängar.

  • Om versionshantering är aktiverat tillämpas indextaggar på en viss version av bloben. Om du anger indextaggar för den aktuella versionen och en ny version skapas associeras inte taggen med den nya versionen. Taggen associeras endast med den tidigare versionen.

  • Taggnycklar och värden måste följa följande namngivningsregler:

    • Alfanumeriska tecken:

      • a till z (gemener)

      • A till Z (versaler)

      • 0 till 9 (tal)

    • Giltiga specialtecken: blanksteg, plus, minus, punkt, kolon, lika med, understreck, snedstreck ( +-.:=_/)

Dricks

Du kan använda en lagringsuppgift för att ange taggar för objekt i stor skala över flera lagringskonton baserat på en uppsättning villkor som du definierar. En lagringsuppgift är en resurs som är tillgänglig i Azure Storage Actions. Ett serverlöst ramverk som du kan använda för att utföra vanliga dataåtgärder på miljontals objekt i flera lagringskonton. Mer information finns i Vad är Azure Storage Actions?.

Hämta och lista blobindextaggar

Blobindextaggar lagras som en underresurs tillsammans med blobdata och kan hämtas oberoende av det underliggande blobdatainnehållet. Blobindextaggar för en enskild blob kan hämtas med åtgärden Hämta blobtaggar . Åtgärden Listblobar med parametern include:tags returnerar också alla blobar i en container tillsammans med deras blobindextaggar.

Viktigt!

Att hämta och lista blobindextaggar kan utföras av lagringsblobdataägaren och av alla som har en signatur för delad åtkomst som har behörighet att komma åt blobens taggar (SAS-behörigheten t ).

Dessutom kan RBAC-användare med behörighet utföra Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read den här åtgärden.

För alla blobar med minst en blobindextagg x-ms-tag-count returneras i åtgärderna Listblobar, Hämta blob och Hämta blobegenskaper som anger antalet indextaggar på bloben.

Hitta data med hjälp av blobindextaggar

Indexeringsmotorn exponerar dina nyckelvärdesattribut i ett flerdimensionellt index. När du har angett dina indextaggar finns de på bloben och kan hämtas omedelbart.

Det kan ta lite tid innan blobindexet uppdateras. Detta gäller både för att lägga till taggar och redigera befintliga. Hur lång tid som krävs beror på arbetsbelastningen. Om en åtgärd för att ange blobtaggar till exempel tar 30 minuter att slutföra med en hastighet av mellan 15000 och 2 0000 transaktioner per sekund kan det ta upp till 10 minuter att indexering av alla dessa blobar. Med en lägre hastighet kan indexeringsfördröjningen vara under en sekund. Fördelningen av trafiken påverkar även indexeringsfördröjningar. Om ett klientprogram till exempel anger taggar på blobar i sekventiell ordning under samma container kan fördröjningen vara högre än om taggar tillämpas på blobar som inte finns tillsammans.

När blobindexet har uppdaterats kan du använda de inbyggda fråge- och identifieringsfunktionerna som erbjuds av Blob Storage.

Med åtgärden Hitta blobbar efter taggar kan du hämta en filtrerad uppsättning blobar vars indextaggar matchar ett visst frågeuttryck. Find Blobs by Tags stöder filtrering mellan alla containrar i ditt lagringskonto eller så kan du begränsa filtreringen till bara en enda container. Eftersom alla indextaggnycklar och värden är strängar använder relationsoperatorer en lexikal sortering.

Viktigt!

Att hitta data med hjälp av blobindextaggar kan utföras av lagringsblobdataägaren och av alla med en signatur för delad åtkomst som har behörighet att hitta blobar efter taggar (SAS-behörigheten f ).

Dessutom kan RBAC-användare med behörighet utföra Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action den här åtgärden.

Följande villkor gäller för filtrering av blobindex:

  • Taggnycklar ska omges av dubbla citattecken (")

  • Taggvärden och containernamn ska omges av enkla citattecken (')

  • @-tecknet tillåts endast för filtrering på ett specifikt containernamn (till exempel @container = 'ContainerName')

  • Filter tillämpas med lexikal sortering på strängar

  • Samma sidintervallåtgärder på samma nyckel är ogiltiga (till exempel "Rank" > '10' AND "Rank" >= '15')

  • När du använder REST för att skapa ett filteruttryck ska tecken vara URI-kodade

  • Taggfrågor är optimerade för likhetsmatchning med hjälp av en enda tagg (t.ex. StoreID = "100"). Intervallfrågor med hjälp av en enda tagg som involverar >, >=, <, <= är också effektiva. Alla frågor som använder AND med fler än en tagg blir inte lika effektiva. Till exempel är kostnaden > "01" OCH kostnaden <= "100" effektiv. Kostnaden > "01 AND StoreID = "2" är inte lika effektiv.

Tabellen nedan visar alla giltiga operatorer för Find Blobs by Tags:

Operatör Description Exempel
= Lika med "Status" = 'In Progress'
> Större än "Date" > '2018-06-18'
>= Större än eller lika med "Priority" >= '5'
< Mindre än "Age" < '32'
<= Mindre än eller lika med "Priority" <= '5'
OCH Logisk och "Rank" >= '010' AND "Rank" < '100'
@container Omfång för en specifik container @container = 'videofiles' AND "status" = 'done'

Kommentar

Bekanta dig med lexikografiska ordningsföljder när du ställer in och frågar efter taggar.

  • Siffror sorteras före bokstäver. Tal sorteras baserat på den första siffran.
  • Versaler sorteras före gemener.
  • Symboler är inte standard. Vissa symboler sorteras före numeriska värden. Andra symboler sorteras före eller efter bokstäver.

Villkorsstyrda blobåtgärder med blobindextaggar

I REST-versionerna 2019-10-10 och senare har de flesta BLOB-tjänst-API:er nu stöd för ett villkorsstyrt huvud, x-ms-if-tagsså att åtgärden endast lyckas om det angivna blobindexvillkoret uppfylls. Om villkoret inte uppfylls får error 412: The condition specified using HTTP conditional header(s) is not metdu .

Rubriken x-ms-if-tags kan kombineras med de andra befintliga VILLKORLIGA HTTP-huvudena (If-Match, If-None-Match och så vidare). Om flera villkorsstyrda huvuden anges i en begäran måste alla utvärderas som sanna för att åtgärden ska lyckas. Alla villkorsstyrda huvuden kombineras effektivt med logiska OCH.

Tabellen nedan visar giltiga operatorer för villkorsstyrda åtgärder:

Operatör Description Exempel
= Equal "Status" = 'In Progress'
<> Not equal "Status" <> 'Done'
> Större än "Date" > '2018-06-18'
>= Större än eller lika med "Priority" >= '5'
< Mindre än "Age" < '32'
<= Mindre än eller lika med "Priority" <= '5'
OCH Logisk och "Rank" >= '010' AND "Rank" < '100'
ELLER Logiskt eller "Status" = 'Done' OR "Priority" >= '05'

Kommentar

Det finns ytterligare två operatorer, inte lika med och logiska, som tillåts i villkorsrubriken x-ms-if-tags för blobåtgärder men som inte finns i åtgärden Find Blobs by Tags .

Plattformsintegreringar med blobindextaggar

Blobindextaggar hjälper dig inte bara att kategorisera, hantera och söka efter dina blobdata, utan även att integrera med andra Blob Storage-funktioner, till exempel livscykelhantering.

Livscykelhantering

blobIndexMatch Med filtret som regel i livscykelhantering kan du flytta data till lågfrekventa nivåer eller ta bort data baserat på de indextaggar som tillämpas på dina blobar. Du kan vara mer detaljerad i dina regler och bara flytta eller ta bort blobar om de matchar de angivna taggarnas villkor.

Du kan ange en blobindexmatchning som en fristående filteruppsättning i en livscykelregel om du vill tillämpa åtgärder på taggade data. Eller så kan du kombinera ett prefix och ett blobindex för att matcha mer specifika datauppsättningar. Om du lägger till flera filter i en livscykelregel så tillämpas en logisk OCH-operation. Åtgärden gäller endast om alla filtervillkor matchar.

Följande exempelregel för livscykelhantering gäller för blockblobar i en container med namnet videofiles. Regeln nivåindelar blobar till arkivlagring endast om data matchar blobindextaggens villkor "Status" == 'Processed' AND "Source" == 'RAW'för .

Exempel på matchningsregel för blobindex för livscykelhantering i Azure-portalen

Behörigheter och auktorisering

Du kan auktorisera åtkomst till blobindextaggar med någon av följande metoder:

Blobindextaggar är en underkälla till blobdata. En användare med behörigheter eller en SAS-token för att läsa eller skriva blobar kanske inte har åtkomst till blobindextaggar.

Rollbaserad åtkomstkontroll

Anropare som använder en Microsoft Entra-identitet kan beviljas följande behörigheter för att arbeta med blobindextaggar.

Åtgärder för blobindextagg Azure RBAC-åtgärd
Ange blobtaggar Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
Hämta blobtaggar Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
Hitta blobar efter taggar Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action

Ytterligare behörigheter, åtskilda från underliggande blobdata, krävs för indextaggåtgärder. Rollen Lagringsblobdataägare beviljas behörigheter för alla tre åtgärder för blobindextaggen.

SAS-behörigheter

Uppringare som använder en signatur för delad åtkomst (SAS) kan beviljas begränsade behörigheter för att arbeta med blobindextaggar.

Tjänst-SAS för en blob

Följande behörigheter kan beviljas i en tjänst-SAS för en blob för att tillåta åtkomst till blobindextaggar. Enbart behörigheterna blobläsning (r) och skrivning (w) räcker inte för att tillåta läsning eller skrivning av dess indextaggar.

Behörighet URI-symbol Tillåtna åtgärder
Indextaggar d Hämta och ange indextaggar för en blob

Tjänst-SAS för en container

Följande behörigheter kan beviljas i en tjänst-SAS för en container för att tillåta filtrering av blobtaggar. Bloblistebehörigheten (i) räcker inte för att tillåta filtrering av blobar efter deras indextaggar.

Behörighet URI-symbol Tillåtna åtgärder
Indextaggar f Hitta blobar med indextaggar

Konto-SAS

Följande behörigheter kan beviljas i ett konto-SAS för att tillåta åtkomst till blobindextaggar och filtrering av blobtaggar.

Behörighet URI-symbol Tillåtna åtgärder
Indextaggar d Hämta och ange indextaggar för en blob
Indextaggar f Hitta blobar med indextaggar

Enbart behörigheterna blobläsning (r) och skrivning (w) räcker inte för att tillåta läsning eller skrivning av dess indextaggar, och listbehörigheten (i) räcker inte för att tillåta filtrering av blobar efter deras indextaggar.

Välja mellan metadata- och blobindextaggar

Både blobindextaggar och metadata ger möjlighet att lagra godtyckliga användardefinierade nyckelvärdesegenskaper tillsammans med en blobresurs. Båda kan hämtas och ställas in direkt, utan att returnera eller ändra innehållet i bloben. Det är möjligt att använda både metadata och indextaggar.

Endast indextaggar indexeras automatiskt och görs sökbara av den interna Blob Storage-tjänsten. Metadata kan inte indexeras eller sökas internt. Du måste använda en separat tjänst, till exempel Azure Search. Blobindextaggar har ytterligare behörigheter för läsning, filtrering och skrivning som är separata från underliggande blobdata. Metadata använder samma behörigheter som blobben och returneras som HTTP-huvuden av åtgärderna Hämta blob och Hämta blobegenskaper . Blobindextaggar krypteras i vila med hjälp av en Microsoft-hanterad nyckel. Metadata krypteras i vila med samma krypteringsnyckel som angetts för blobdata.

I följande tabell sammanfattas skillnaderna mellan metadata och blobindextaggar:

Metadata Blobindextaggar
Gränser Ingen numerisk gräns, totalt 8 KB, skiftlägesokänslig 10 taggar per blob max, 768 byte per tagg, skiftlägeskänslig
Uppdateringar Tillåts inte på arkivnivå, Set Blob Metadata ersätter alla befintliga metadata, Set Blob Metadata ändrar blobens senaste ändringstid Tillåts för alla åtkomstnivåer, Set Blob Tags ersätter alla befintliga taggar, Set Blob Tags ändrar inte blobbens senaste ändringstid
Lagring Lagras med blobdata Underresurs för blobdata
Indexering och frågekörning Måste använda en separat tjänst, till exempel Azure Search Indexerings- och frågefunktioner som är inbyggda i Blob Storage
Kryptering Krypterad i vila med samma krypteringsnyckel som används för blobdata Krypterad i vila med en Microsoft-hanterad krypteringsnyckel
Prissättning Storleken på metadata ingår i lagringskostnaderna för en blob Fast kostnad per indextagg
Sidhuvudsvar Metadata som returneras som rubriker i Get Blob och Get Blob Properties Taggantal som returneras av Get Blob eller Get Blob Properties, taggar som endast returneras av Get Blob Tags och List Blobs
Behörigheter Läs- eller skrivbehörigheter för blobdata utökas till metadata Ytterligare behörigheter krävs för att läsa, filtrera eller skriva indextaggar
Namngivning Metadatanamn måste följa namngivningsreglerna för C#-identifierare Blobindextaggar stöder ett större antal alfanumeriska tecken

Prissättning

Du debiteras för det månatliga genomsnittliga antalet indextaggar i ett lagringskonto. Indexeringsmotorn kostar ingenting. Begäranden om att ange blobtaggar, hämta blobtaggar och hitta blobtaggar debiteras enligt aktuella respektive transaktionsfrekvens. Observera att antalet listtransaktioner som förbrukas när du gör en Find Blobs by Tag-transaktion är lika med antalet satser i begäran. Frågan (StoreID = 100) är till exempel en listtransaktion. Frågan (StoreID = 100 AND SKU = 10010) är två listtransaktioner. Mer information finns i Priser för blockblob.

Funktionsstöd

Stöd för den här funktionen kan påverkas genom att aktivera Data Lake Storage Gen2, NFS 3.0-protokoll (Network File System) eller SSH File Transfer Protocol (SFTP). Om du har aktiverat någon av dessa funktioner kan du läsa Stöd för Blob Storage-funktioner i Azure Storage-konton för att utvärdera stödet för den här funktionen.

Villkor och kända problem

I det här avsnittet beskrivs kända problem och villkor.

  • Endast konton för generell användning v2 och Premium-blockblobkonton stöds. Premium-sidblob, äldre blob och konton med ett hierarkiskt namnområde aktiverat stöds inte. Allmänna v1-konton stöds inte.

  • Att ladda upp sidblobar med indextaggar bevarar inte taggarna. Ange taggarna när du har laddat upp en sidblob.

  • Om Blob Storage-versionshantering är aktiverat kan du fortfarande använda indextaggar på den aktuella versionen. Indextaggar bevaras för tidigare versioner, men taggarna skickas inte till blobindexmotorn, så du kan inte använda dem för att hämta tidigare versioner. Om du höjer upp en tidigare version till den aktuella versionen blir taggarna för den tidigare versionen taggarna för den aktuella versionen. Eftersom taggarna är associerade med den aktuella versionen skickas de till blobindexmotorn och du kan fråga dem.

  • Det finns inget API för att avgöra om indextaggar indexeras.

  • Livscykelhantering stöder endast likhetskontroller med blobindexmatchning.

  • Copy Blob kopierar inte blobindextaggar från källbloben till den nya målbloben. Du kan ange de taggar som du vill använda för målbloben under kopieringsåtgärden.

Vanliga frågor och svar

Se Vanliga frågor och svar om blobindextaggar.

Nästa steg

Ett exempel på hur du använder blobindex finns i Använda blobindex för att hantera och hitta data.

Lär dig mer om livscykelhantering och ange en regel med matchning av blobindex.