Azure Blob-gegevens beheren en zoeken met blobindextags
Naarmate gegevenssets groter worden, kan het lastig zijn om een specifiek object in een zee met gegevens te vinden. Blob-indextags bieden mogelijkheden voor gegevensbeheer en detectie met behulp van sleutelwaardetagkenmerken. U kunt objecten in één container of in alle containers in uw opslagaccount categoriseren en zoeken. Wanneer de gegevensvereisten veranderen, kunnen objecten dynamisch worden gecategoriseerd door hun indextags bij te werken. Objecten kunnen in-place blijven met hun huidige containerorganisatie.
Met blobindextags kunt u het volgende doen:
Uw blobs dynamisch categoriseren met behulp van indextags voor sleutelwaarden
Snel specifieke gelabelde blobs vinden in een volledig opslagaccount
Voorwaardelijk gedrag voor blob-API's opgeven op basis van de evaluatie van indextags
Indextags gebruiken voor geavanceerde besturingselementen voor functies zoals levenscyclusbeheer van blobs
Overweeg een scenario waarin u miljoenen blobs in uw opslagaccount hebt, die toegankelijk zijn voor veel verschillende toepassingen. U wilt alle gerelateerde gegevens uit één project zoeken. U weet niet zeker wat er binnen het bereik valt, omdat de gegevens kunnen worden verspreid over meerdere containers met verschillende naamconventies. Uw toepassingen uploaden echter alle gegevens met tags op basis van hun project. In plaats van miljoenen blobs te doorzoeken en namen en eigenschappen te vergelijken, kunt u deze gebruiken Project = Contoso
als uw detectiecriteria. De Blob-index filtert alle containers in uw hele opslagaccount om snel de set van 50 blobs te vinden en te retourneren.Project = Contoso
Blob-indextags en gegevensbeheer
Voorvoegsels voor container- en blobnamen zijn eendimensionale categorisaties. Blob-indextags maken multidimensionale categorisatie mogelijk voor blobgegevenstypen (Blok, Toevoegen of Pagina).a0> Multidimensionale categorisatie wordt systeemeigen geïndexeerd door Azure Blob Storage, zodat u snel uw gegevens kunt vinden.
Houd rekening met de volgende vijf blobs in uw opslagaccount:
container1/transaction.csv
container2/campaign.docx
foto's/bannerphoto.png
archieven/voltooid/2019review.pdf
logs/2020/01/01/logfile.txt
Deze blobs worden gescheiden met behulp van een voorvoegsel van de naam van de container/virtuele map/blob. U kunt een indextagkenmerk voor Project = Contoso
deze vijf blobs instellen om ze samen te categoriseren terwijl de huidige voorvoegselorganisatie behouden blijft. Als u indextags toevoegt, hoeft u geen gegevens te verplaatsen door de mogelijkheid om gegevens te filteren en te vinden met behulp van de index.
Blob-indextags instellen
Blob-indextags zijn sleutel-waardekenmerken die kunnen worden toegepast op nieuwe of bestaande objecten in uw opslagaccount. U kunt indextags opgeven tijdens het uploadproces met behulp van Put Blob, Put Block List of Copy Blob-bewerkingen en de optionele x-ms-tags
header. Als u al blobs in uw opslagaccount hebt, roept u Blob-tags instellen aan die een opgemaakt XML-document doorgeven met de indextags in de hoofdtekst van de aanvraag.
Belangrijk
Het instellen van blobindextags kan worden uitgevoerd door de eigenaar van de opslagblobgegevens en door iedereen met een Shared Access Signature die gemachtigd is voor toegang tot de tags van de blob (de t
SAS-machtiging).
Daarnaast kunnen RBAC-gebruikers met de Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write
machtiging deze bewerking uitvoeren.
U kunt één tag toepassen op uw blob om te beschrijven wanneer uw gegevens zijn verwerkt.
"processedDate" = '2020-01-01'
U kunt meerdere tags toepassen op uw blob, zodat deze beter beschrijvend zijn voor de gegevens.
"Project" = "Contoso" "Geclassificeerd" = "True" "Status" = "Unprocessed" "Priority" = '01'
Als u de bestaande indextagkenmerken wilt wijzigen, haalt u de bestaande tagkenmerken op, wijzigt u de tagkenmerken en vervangt u deze door de bewerking Blob-tags instellen. Als u alle indextags uit de blob wilt verwijderen, roept u de Set Blob Tags
bewerking aan zonder tagkenmerken opgegeven. Omdat blobindextags een subresource zijn voor de inhoud van de blobgegevens, Set Blob Tags
worden geen onderliggende inhoud gewijzigd en wordt de laatste wijzigingstijd of eTag van de blob niet gewijzigd. U kunt indextags maken of wijzigen voor alle huidige basis-blobs. Indextags blijven ook behouden voor eerdere versies, maar worden niet doorgegeven aan de blob-indexengine, dus u kunt geen query's uitvoeren op indextags om eerdere versies op te halen. Tags op momentopnamen of voorlopig verwijderde blobs kunnen niet worden gewijzigd.
De volgende limieten zijn van toepassing op blobindextags:
Elke blob kan maximaal 10 blobindextags bevatten
Tagsleutels moeten tussen één en 128 tekens zijn.
Tagwaarden moeten tussen nul en 256 tekens zijn.
Tagsleutels en -waarden zijn hoofdlettergevoelig.
Tagsleutels en -waarden ondersteunen alleen tekenreeksgegevenstypen. Getallen, datums, tijden of speciale tekens worden opgeslagen als tekenreeksen.
Als versiebeheer is ingeschakeld, worden indextags toegepast op een specifieke versie van de blob. Als u indextags instelt voor de huidige versie en er een nieuwe versie wordt gemaakt, wordt de tag niet gekoppeld aan de nieuwe versie. De tag wordt alleen gekoppeld aan de vorige versie.
Tagsleutels en -waarden moeten voldoen aan de volgende naamgevingsregels:
Alfanumerieke tekens:
a tot en met z (kleine letters)
A tot en met Z (hoofdletters)
0 tot en met 9 (getallen)
Geldige speciale tekens: spatie, plus, min, punt, dubbele punt, gelijk aan, onderstrepingsteken, slash (
+-.:=_/
)
Tip
U kunt een opslagtaak gebruiken om tags in te stellen op objecten op schaal voor meerdere opslagaccounts op basis van een set voorwaarden die u definieert. Een opslagtaak is een resource die beschikbaar is in Azure Storage Actions; een serverloos framework dat u kunt gebruiken om algemene gegevensbewerkingen uit te voeren op miljoenen objecten in meerdere opslagaccounts. Zie Wat is Azure Storage Actions?voor meer informatie.
Indextags voor blob ophalen en vermelden
Blob-indextags worden samen met de blobgegevens opgeslagen als een subresource en kunnen onafhankelijk van de onderliggende inhoud van de blobgegevens worden opgehaald. Blob-indextags voor één blob kunnen worden opgehaald met de bewerking Blobtags ophalen. De bewerking List Blobs met de include:tags
parameter retourneert ook alle blobs in een container, samen met de bijbehorende blobindextags.
Belangrijk
Het ophalen en vermelden van blob-indextags kan worden uitgevoerd door de eigenaar van de opslagblobgegevens en door iedereen met een Shared Access Signature die gemachtigd is voor toegang tot de tags van de blob (de t
SAS-machtiging).
Daarnaast kunnen RBAC-gebruikers met de Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read
machtiging deze bewerking uitvoeren.
Voor blobs met ten minste één blobindextag wordt de x-ms-tag-count
waarde geretourneerd in de bewerkingen List Blobs, Get Blob en Get Blob Properties die het aantal indextags op de blob aangeven.
Gegevens zoeken met behulp van blobindextags
De indexeringsengine toont uw sleutel-waardekenmerken in een multidimensionale index. Nadat u uw indextags hebt ingesteld, bestaan deze in de blob en kunnen ze onmiddellijk worden opgehaald.
Het kan enige tijd duren voordat de blobindex wordt bijgewerkt. Dit geldt voor zowel het toevoegen van tags als het bewerken van bestaande tags. De benodigde tijd is afhankelijk van de werkbelasting. Als het bijvoorbeeld 30 minuten duurt voordat een bewerking Blob-tags instellen is voltooid met een snelheid van 15000 tot 20000 transacties per seconde, kan het tot 10 minuten duren om al deze blobs te indexeren. Met een lagere snelheid kan de indexeringsvertraging minder dan een seconde duren. De distributie van verkeer is ook van invloed op indexeringsvertragingen. Als een clienttoepassing bijvoorbeeld tags instelt op blobs in sequentiële volgorde onder dezelfde container, kan de vertraging hoger zijn dan wanneer tags worden toegepast op blobs die zich niet samen bevinden.
Nadat de blob-index is bijgewerkt, kunt u de systeemeigen query- en detectiemogelijkheden van Blob Storage gebruiken.
Met de bewerking Blobs zoeken op tags kunt u een gefilterde set blobs ophalen waarvan de indextags overeenkomen met een bepaalde query-expressie. Find Blobs by Tags
ondersteunt filteren in alle containers binnen uw opslagaccount of u kunt het filteren op slechts één container instellen. Omdat alle indextagsleutels en -waarden tekenreeksen zijn, gebruiken relationele operators een lexicografische sortering.
Belangrijk
Het zoeken van gegevens met behulp van blobindextags kan worden uitgevoerd door de eigenaar van de opslagblobgegevens en door iedereen met een Shared Access Signature die gemachtigd is om blobs te vinden op tags (de f
SAS-machtiging).
Daarnaast kunnen RBAC-gebruikers met de Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action
machtiging deze bewerking uitvoeren.
De volgende criteria zijn van toepassing op het filteren van blobindexen:
Tagsleutels moeten tussen dubbele aanhalingstekens (") staan
Tagwaarden en containernamen moeten tussen enkele aanhalingstekens (') worden geplaatst
Het @-teken is alleen toegestaan voor filteren op een specifieke containernaam (bijvoorbeeld
@container = 'ContainerName'
)Filters worden toegepast met lexicografische sortering op tekenreeksen
Dezelfde bewerkingen aan dezelfde zijdelings bereik op dezelfde sleutel zijn ongeldig (bijvoorbeeld
"Rank" > '10' AND "Rank" >= '15'
)Wanneer u REST gebruikt om een filterexpressie te maken, moeten tekens zijn gecodeerd met een URI
Tagquery's zijn geoptimaliseerd voor gelijkheidsovereenkomsten met één tag (bijvoorbeeld StoreID = "100"). Bereikquery's met één tag met betrekking tot >, >=, <, <= zijn ook efficiënt. Elke query die GEBRUIKMAAKT van EN met meer dan één tag, is niet zo efficiënt. Kosten > "01" AND Cost <= "100" zijn bijvoorbeeld efficiënt. Kosten > "01 AND StoreID = "2" is niet zo efficiënt.
In de onderstaande tabel ziet u alle geldige operators voor Find Blobs by Tags
:
Operator | Description | Voorbeeld |
---|---|---|
= | Is gelijk aan | "Status" = 'In Progress' |
> | Groter dan | "Date" > '2018-06-18' |
>= | Groter dan of gelijk aan | "Priority" >= '5' |
< | Kleiner dan | "Age" < '32' |
<= | Kleiner dan of gelijk aan | "Priority" <= '5' |
EN | Logisch en | "Rank" >= '010' AND "Rank" < '100' |
@container | Bereik tot een specifieke container | @container = 'videofiles' AND "status" = 'done' |
Notitie
Wees vertrouwd met lexicografische volgorde bij het instellen en opvragen van tags.
- Getallen worden gesorteerd voor letters. Getallen worden gesorteerd op basis van het eerste cijfer.
- Hoofdletters worden gesorteerd voor kleine letters.
- Symbolen zijn niet standaard. Sommige symbolen worden gesorteerd vóór numerieke waarden. Andere symbolen worden gesorteerd voor of na letters.
Voorwaardelijke blobbewerkingen met blobindextags
In REST-versies 2019-10-10 en hoger ondersteunen de meeste blobservice-API's nu een voorwaardelijke header, x-ms-if-tags
zodat de bewerking alleen slaagt als aan de opgegeven blobindexvoorwaarde wordt voldaan. Als niet aan de voorwaarde wordt voldaan, krijgt error 412: The condition specified using HTTP conditional header(s) is not met
u .
De x-ms-if-tags
header kan worden gecombineerd met de andere bestaande voorwaardelijke HTTP-headers (If-Match, If-None-Match, enzovoort). Als er meerdere voorwaardelijke headers worden opgegeven in een aanvraag, moeten ze allemaal waar evalueren om de bewerking te voltooien. Alle voorwaardelijke headers worden effectief gecombineerd met logische AND.
In de onderstaande tabel ziet u de geldige operators voor voorwaardelijke bewerkingen:
Operator | Description | Voorbeeld |
---|---|---|
= | Equal | "Status" = 'In Progress' |
<> | Not equal | "Status" <> 'Done' |
> | Groter dan | "Date" > '2018-06-18' |
>= | Groter dan of gelijk aan | "Priority" >= '5' |
< | Kleiner dan | "Age" < '32' |
<= | Kleiner dan of gelijk aan | "Priority" <= '5' |
EN | Logisch en | "Rank" >= '010' AND "Rank" < '100' |
OF | Logisch of | "Status" = 'Done' OR "Priority" >= '05' |
Notitie
Er zijn twee extra operators, niet gelijk aan en logisch of, die zijn toegestaan in de voorwaardelijke x-ms-if-tags
header voor blobbewerkingen, maar die niet aanwezig zijn in de Find Blobs by Tags
bewerking.
Platformintegraties met blobindextags
Blob-indextags helpen u niet alleen bij het categoriseren, beheren en zoeken op uw blobgegevens, maar bieden ook integratie met andere Blob Storage-functies, zoals levenscyclusbeheer.
Levenscyclusbeheer
Met behulp van het blobIndexMatch
filter als regel in levenscyclusbeheer kunt u gegevens verplaatsen naar koeler lagen of gegevens verwijderen op basis van de indextags die zijn toegepast op uw blobs. U kunt gedetailleerder zijn in uw regels en alleen blobs verplaatsen of verwijderen als ze voldoen aan de opgegeven criteria voor tags.
U kunt een blob-indexovereenkomst instellen als een zelfstandige filterset in een levenscyclusregel om acties toe te passen op getagde gegevens. U kunt ook zowel een voorvoegsel als een blob-index combineren om overeen te komen met specifiekere gegevenssets. Als u meerdere filters in een levenscyclusregel opgeeft, wordt een logische AND-bewerking toegepast. De actie wordt alleen toegepast als alle filtercriteria overeenkomen.
De volgende voorbeeldregel voor levenscyclusbeheer is van toepassing op blok-blobs in een container met de naam videofiles
. De regellagen blobs om opslag alleen te archiveren als de gegevens voldoen aan de criteria van de blob-indextag van "Status" == 'Processed' AND "Source" == 'RAW'
.
Machtigingen en autorisatie
U kunt toegang tot blobindextags autoriseren met behulp van een van de volgende methoden:
Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om machtigingen te verlenen aan een Microsoft Entra-beveiligingsprincipaal. Gebruik Microsoft Entra ID voor superieure beveiliging en gebruiksgemak. Zie Toegang tot gegevens in Azure Storage autoriseren voor meer informatie over het gebruik van Microsoft Entra-id met blobbewerkingen.
Een Sas (Shared Access Signature) gebruiken om toegang tot de blobindex te delegeren. Zie Beperkte toegang verlenen tot Azure Storage-resources met behulp van Sas (Shared Access Signatures ) voor meer informatie over handtekeningen voor gedeelde toegang.
Gebruik de toegangssleutels voor het account om bewerkingen met een gedeelde sleutel te autoriseren. Zie Autoriseren met gedeelde sleutel voor meer informatie.
Blob-indextags zijn een subresource voor de blobgegevens. Een gebruiker met machtigingen of een SAS-token voor het lezen of schrijven van blobs heeft mogelijk geen toegang tot de blobindextags.
Op rollen gebaseerd toegangsbeheer
Bellers die een Microsoft Entra-identiteit gebruiken, kunnen de volgende machtigingen krijgen om te werken op blob-indextags.
Tagbewerkingen voor blob-index | Azure RBAC-actie |
---|---|
Blobtags instellen | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write |
Blobtags ophalen | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read |
Blobs zoeken op tags | Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action |
Aanvullende machtigingen, gescheiden van de onderliggende blobgegevens, zijn vereist voor indextagbewerkingen. De rol Eigenaar van opslagblobgegevens krijgt machtigingen voor alle drie de bewerkingen van de blob-indextag.
SAS-machtigingen
Bellers die een SAS (Shared Access Signature) gebruiken, kunnen machtigingen krijgen om te werken op blobindextags.
Service-SAS voor een blob
De volgende machtigingen kunnen worden verleend in een service-SAS voor een blob om toegang tot blobindextags toe te staan. Alleen de lees- en schrijfmachtigingen voor de blob (r
) en schrijven (w
) zijn niet voldoende om lees- of schrijftags toe te staan.
Machtiging | URI-symbool | Toegestane bewerkingen |
---|---|---|
Indextags | h | Indextags voor een blob ophalen en instellen |
Service-SAS voor een container
De volgende machtigingen kunnen worden verleend in een service-SAS voor een container om filteren op blobtags toe te staan. De machtiging voor de bloblijst (i
) is niet voldoende om filterblobs toe te staan op basis van hun indextags.
Machtiging | URI-symbool | Toegestane bewerkingen |
---|---|---|
Indextags | f | Blobs zoeken met indextags |
Account-SAS
De volgende machtigingen kunnen worden verleend in een account-SAS om toegang te verlenen tot blobindextags en filteren op blobtags.
Machtiging | URI-symbool | Toegestane bewerkingen |
---|---|---|
Indextags | h | Indextags voor een blob ophalen en instellen |
Indextags | f | Blobs zoeken met indextags |
De machtigingen voor lezen (r
) en schrijven (w
) van de blob zijn niet voldoende om lees- of schrijftags toe te staan en de machtiging (i
) voor de lijst () is niet voldoende om filteren van blobs door hun indextags toe te staan.
Kiezen tussen metagegevens en blobindextags
Zowel blob-indextags als metagegevens bieden de mogelijkheid om willekeurige door de gebruiker gedefinieerde sleutelwaarde-eigenschappen naast een blobresource op te slaan. Beide kunnen rechtstreeks worden opgehaald en ingesteld, zonder de inhoud van de blob te retourneren of te wijzigen. Het is mogelijk om zowel metagegevens als indextags te gebruiken.
Alleen indextags worden automatisch geïndexeerd en doorzoekbaar gemaakt door de systeemeigen Blob Storage-service. Metagegevens kunnen niet systeemeigen worden geïndexeerd of doorzocht. U moet een afzonderlijke service gebruiken, zoals Azure Search. Blob-indextags hebben aanvullende machtigingen voor lezen, filteren en schrijven die gescheiden zijn van de onderliggende blobgegevens. Metagegevens gebruiken dezelfde machtigingen als de blob en worden geretourneerd als HTTP-headers door de bewerkingen Blob ophalen en Blobeigenschappen ophalen. Blob-indextags worden in rust versleuteld met behulp van een door Microsoft beheerde sleutel. Metagegevens worden in rust versleuteld met dezelfde versleutelingssleutel die is opgegeven voor blobgegevens.
De volgende tabel bevat een overzicht van de verschillen tussen metagegevens en blobindextags:
Metagegevens | Blob-indextags | |
---|---|---|
Limieten | Geen numerieke limiet, totaal van 8 kB, niet hoofdlettergevoelig | 10 tags per blob max, 768 bytes per tag, hoofdlettergevoelig |
Updates | Niet toegestaan voor archieflaag, Set Blob Metadata vervangt alle bestaande metagegevens, Set Blob Metadata wijzigt de laatste wijzigingstijd van de blob |
Toegestaan voor alle toegangslagen, Set Blob Tags vervangt alle bestaande tags, Set Blob Tags wijzigt de laatste wijzigingstijd van de blob niet |
Storage | Opgeslagen met de blobgegevens | Subresource van de blobgegevens |
Indexeren en query's uitvoeren | Moet een afzonderlijke service gebruiken, zoals Azure Search | Indexerings- en querymogelijkheden die zijn ingebouwd in Blob Storage |
Versleuteling | Versleuteld at rest met dezelfde versleutelingssleutel die wordt gebruikt voor blobgegevens | Versleuteld at rest met een door Microsoft beheerde versleutelingssleutel |
Prijzen | De grootte van metagegevens wordt opgenomen in de opslagkosten voor een blob | Vaste kosten per indextag |
Antwoord van koptekst | Metagegevens die worden geretourneerd als headers in Get Blob en Get Blob Properties |
Aantal tags geretourneerd door Get Blob of Get Blob Properties , tags die alleen worden geretourneerd door Get Blob Tags en List Blobs |
Machtigingen | Lees- of schrijfmachtigingen voor blobgegevens worden uitgebreid naar metagegevens | Aanvullende machtigingen zijn vereist voor het lezen, filteren of schrijven van indextags |
Naamgeving | Namen van metagegevens moeten voldoen aan de naamgevingsregels voor C#-id's | Blob-indextags ondersteunen een breder scala aan alfanumerieke tekens |
Prijzen
Er worden kosten in rekening gebracht voor het maandelijkse gemiddelde aantal indextags in een opslagaccount. Er zijn geen kosten verbonden aan de indexeringsengine. Aanvragen voor het instellen van blobtags, het ophalen van blobtags en het zoeken van blobtags worden in rekening gebracht tegen de huidige transactietarieven. Houd er rekening mee dat het aantal gebruikte lijsttransacties bij het uitvoeren van een Find Blobs by Tag-transactie gelijk is aan het aantal componenten in de aanvraag. De query (StoreID = 100) is bijvoorbeeld één lijsttransactie. De query (StoreID = 100 AND SKU = 10010) is twee lijsttransacties. Zie prijzen voor blok-blob voor meer informatie.
Functieondersteuning
Ondersteuning voor deze functie kan worden beïnvloed door het inschakelen van Data Lake Storage Gen2, het NFS-protocol (Network File System) 3.0 of het SSH File Transfer Protocol (SFTP). Als u een van deze mogelijkheden hebt ingeschakeld, raadpleegt u de ondersteuning voor Blob Storage-functies in Azure Storage-accounts om ondersteuning voor deze functie te beoordelen.
Voorwaarden en bekende problemen
In deze sectie worden bekende problemen en voorwaarden beschreven.
Alleen v2-accounts voor algemeen gebruik en premium blok-blobaccounts worden ondersteund. Premium-pagina-blob, verouderde blob en accounts waarvoor een hiërarchische naamruimte is ingeschakeld, worden niet ondersteund. Accounts voor algemeen gebruik v1 worden niet ondersteund.
Als u pagina-blobs uploadt met indextags, blijven de tags niet behouden. Stel de tags in na het uploaden van een pagina-blob.
Als versiebeheer voor Blob Storage is ingeschakeld, kunt u nog steeds indextags gebruiken voor de huidige versie. Indextags blijven behouden voor eerdere versies, maar deze tags worden niet doorgegeven aan de blob-indexengine, dus u kunt ze niet gebruiken om eerdere versies op te halen. Als u een eerdere versie naar de huidige versie promovt, worden de tags van die vorige versie de tags van de huidige versie. Omdat deze tags zijn gekoppeld aan de huidige versie, worden ze doorgegeven aan de blob-indexengine en kunt u er query's op uitvoeren.
Er is geen API om te bepalen of indextags zijn geïndexeerd.
Levenscyclusbeheer ondersteunt alleen gelijkheidscontroles met een blob-indexovereenkomst.
Copy Blob
kopieert geen blobindextags van de bron-blob naar de nieuwe doel-blob. U kunt de tags opgeven die u tijdens de kopieerbewerking wilt toepassen op de doel-blob.
Veelgestelde vragen
Zie veelgestelde vragen over indextags voor blob.
Volgende stappen
Zie Blob-index gebruiken om gegevens te beheren en te zoeken voor een voorbeeld van het gebruik van een blobindex.
Meer informatie over levenscyclusbeheer en het instellen van een regel met overeenkomende blobindexen.