Informatie over blok-blobs, append-blobs en pagina-blobs

De opslagservice biedt drie typen blobs: blok-blobs, blobs voor toevoegen en pagina-blobs. U geeft het blobtype op wanneer u de blob maakt. Zodra de blob is gemaakt, kan het type ervan niet worden gewijzigd en kan deze alleen worden bijgewerkt door bewerkingen te gebruiken die geschikt zijn voor dat blobtype, dat wil zeggen, het schrijven van een blok of lijst met blokken naar een blok-blob, het toevoegen van blokken aan een toevoegende blob en het schrijven van pagina's naar een pagina-blob.

Alle blobs geven doorgevoerde wijzigingen onmiddellijk weer. Elke versie van de blob heeft een unieke tag, een ETag genoemd, die u kunt gebruiken met toegangsvoorwaarden om ervoor te zorgen dat u alleen een specifiek exemplaar van de blob wijzigt.

Elke blob kan worden geleased voor exclusieve schrijftoegang. Wanneer een blob is geleased, kunnen alleen aanroepen die de huidige lease-id bevatten de blob of (voor blok-blobs) de blokken wijzigen.

Elke blob kan worden gedupliceerd in een momentopname. Zie Een momentopname van een blob maken voor meer informatie over momentopnamen.

Notitie

Blobs in de Azure-opslagemulator zijn beperkt tot een maximale grootte van 2 GiB.

Over blok-blobs

Blok-blobs zijn geoptimaliseerd voor het efficiënt uploaden van grote hoeveelheden gegevens. Blok-blobs bestaan uit blokken, die elk worden geïdentificeerd met een blok-id. Een blok-blob kan maximaal 50.000 blokken bevatten. Elk blok in een blok-blob kan een andere grootte hebben, tot de maximale grootte is toegestaan voor de serviceversie die wordt gebruikt. Als u een blok-blob wilt maken of wijzigen, schrijft u een set blokken via de bewerking Put Block en legt u de blokken vervolgens vast in een blob met de bewerking Put Block List.

Blobs die kleiner zijn dan een bepaalde grootte (bepaald door de serviceversie) kunnen in zijn geheel worden geüpload met één schrijfbewerking via Put Blob.

In de volgende tabel staan de maximale blok- en blobgroottes die per serviceversie zijn toegestaan.

Serviceversie Maximale blokgrootte (via Put Block) Maximale blobgrootte (via Put Block List) Maximale blobgrootte via enkele schrijfbewerking (via Put Blob)
Versie 2019-12-12 en hoger 4000 MiB Ongeveer 190,7 TiB (4000 MiB x 50.000 blokken) 5000 MiB (preview)
Versie 2016-05-31 t/m versie 2019-07-07 100 MiB Ongeveer 4,75 TiB (100 MiB x 50.000 blokken) 256 MiB
Versies vóór 2016-05-31 4 MiB Ongeveer 195 GiB (4 MiB x 50.000 blokken) 64 MiB

Storage-clients hebben standaard een maximale upload van één blob van 128 MiB, ingesteld in de Azure Storage-clientbibliotheek voor .NET versie 11 met behulp van de eigenschap SingleBlobUploadThresholdInBytes van het object BlobRequestOptions. Wanneer het uploaden van een blok-blob groter is dan de waarde in deze eigenschap, wordt het bestand door opslag-clients in blokken opgeslagen. U kunt per aanvraag het aantal threads instellen dat wordt gebruikt om de blokken parallel te uploaden met behulp van de eigenschap ParallelOperationThreadCount van het object BlobRequestOptions.

Wanneer u een blok uploadt naar een blob in uw opslagaccount, wordt het gekoppeld aan de opgegeven blok-blob, maar wordt het pas onderdeel van de blob als u een lijst met blokken hebt gemaakt die de id van het nieuwe blok bevat. Nieuwe blokken blijven in een niet-vastgelegde status totdat ze specifiek zijn vastgelegd of verwijderd. Er kunnen maximaal 100.000 niet-toegestane blokken zijn. Als u een blok schrijft, wordt de laatste wijzigingstijd van een bestaande blob niet bijgewerkt.

Blok-blobs bevatten functies die u helpen bij het beheren van grote bestanden via netwerken. Met een blok-blob kunt u meerdere blokken parallel uploaden om de uploadtijd te verlagen. Elk blok kan een MD5-hash bevatten om de overdracht te controleren, zodat u de voortgang van het uploaden kunt volgen en blokken zo nodig opnieuw kunt verzenden. U kunt blokken in elke volgorde uploaden en de volgorde bepalen in de laatste stap voor de blokkeringslijst. U kunt ook een nieuw blok uploaden om een bestaand niet-ingediend blok van dezelfde blok-id te vervangen. U hebt één week om blokken door te zetten in een blob voordat ze worden verwijderd. Alle niet-doorgestuurde blokken worden ook verwijderd wanneer een blokkeringslijstcombindingsbewerking wordt uitgevoerd, maar deze niet bevatten.

U kunt een bestaande blok-blob wijzigen door bestaande blokken in te voegen, te vervangen of te verwijderen. Nadat u het blok of de gewijzigde blokken hebt geüpload, kunt u een nieuwe versie van de blob commiten door de nieuwe blokken door te voeren met de bestaande blokken die u met één doorvoeringsbewerking wilt blijven gebruiken. Als u hetzelfde bytesbereik wilt invoegen op twee verschillende locaties van de vastgelegde blob, kunt u hetzelfde blok op twee plaatsen binnen dezelfde commit-bewerking uitvoeren. Als er geen blok wordt gevonden, mislukt de volledige toezeggingsbewerking met een fout en wordt de blob niet gewijzigd. Elke blokcombinding overschrijft de bestaande eigenschappen en metagegevens van de blob en alle niet-opgenomen blokken worden verwijderd.

Blok-ID's zijn tekenreeksen met een gelijke lengte binnen een blob. Blokclientcode maakt meestal gebruik van base-64-codering om tekenreeksen te normaliseren in gelijke lengten. Wanneer u base-64-codering gebruikt, moet de vooraf gecodeerde tekenreeks 64 bytes of minder zijn. Blok-id-waarden kunnen in verschillende blobs worden gedupliceerd.

Als u een blok schrijft voor een blob die niet bestaat, wordt er een nieuwe blok-blob gemaakt met een lengte van nul bytes. Deze blob wordt weergegeven in bloblijsten die niet-opgenomen blobs bevatten. Als u geen blok doorlaat aan deze blob, worden deze en de niet-doorgestuurde blokken één week na de laatste geslaagde blokupload verwijderd. Alle niet-doorgestuurde blokken worden ook verwijderd wanneer een nieuwe blob met dezelfde naam wordt gemaakt met één stap (in plaats van het proces voor het uploaden en vervolgens commiten in twee stappen).

Pagina-blobs

Pagina-blobs zijn een verzameling pagina's van 512 byte die zijn geoptimaliseerd voor willekeurige lees- en schrijfbewerkingen. Als u een pagina-blob wilt maken, initialiseert u de pagina-blob en geeft u de maximale grootte op die de pagina-blob zal groeien. Als u de inhoud van een pagina-blob wilt toevoegen of bijwerken, schrijft u een pagina of pagina's door een offset en een bereik op te geven dat beide zijn afgestemd op paginagrenzen van 512 byte. Een schrijf naar een pagina-blob kan slechts één pagina, een aantal pagina's of maximaal 4 MiB van de pagina-blob overschrijven. Schrijf-naar-pagina-blobs vinden plaats en worden onmiddellijk aan de blob vastgelegd. De maximale grootte voor een pagina-blob is 8 TiB.

Schijven van virtuele Azure-machines worden gebruikt door pagina-blobs. Azure biedt twee typen duurzame schijfopslag: Premium en Standard. Premium opslag voor pagina-blobs is ontworpen voor workloads van virtuele Azure-machines die consistente hoge prestaties en lage latentie vereisen. Zie de sectie Premium SSD (Solid-State Drives) van het artikel Select a disk type for IaaS VMs (Een schijftype voor IaaS-VM's selecteren) voor gedetailleerde informatie. Zie Schaalbaarheids- en prestatiedoelen voor meer informatie over de schaalbaarheidsdoelen voor Premium Storage voor Azure Storage pagina-blobs.

Over blobs voor append

Een append-blob bestaat uit blokken en is geoptimaliseerd voor append-bewerkingen. Wanneer u een toevoegende blob wijzigt, worden blokken alleen aan het einde van de blob toegevoegd via de bewerking Blok toevoegen. Het bijwerken of verwijderen van bestaande blokken wordt niet ondersteund. In tegenstelling tot een blok-blob maakt een append-blob de blok-ID's niet beschikbaar.

Elk blok in een append-blob kan een andere grootte hebben, maximaal 4 MiB en een blob kan maximaal 50.000 blokken bevatten. De maximale grootte van een append-blob is daarom iets meer dan 195 GiB (4 MiB X 50.000 blokken).

Zie ook