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-tags
så 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 met
du .
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 .
Behörigheter och auktorisering
Du kan auktorisera åtkomst till blobindextaggar med någon av följande metoder:
Använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett Microsoft Entra-säkerhetsobjekt. Använd Microsoft Entra-ID för överlägsen säkerhet och användarvänlighet. Mer information om hur du använder Microsoft Entra-ID med blobåtgärder finns i Auktorisera åtkomst till data i Azure Storage.
Använda en signatur för delad åtkomst (SAS) för att delegera åtkomst till blobindex. Mer information om signaturer för delad åtkomst finns i Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS).
Använda kontoåtkomstnycklarna för att auktorisera åtgärder med delad nyckel. Mer information finns i Auktorisera med delad nyckel.
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.