Présentation des objets blob de blocs, des objets blob d'ajouts et des objets blob de pages
Le service de stockage propose trois types d’objets blob : les objets blob de blocs, lesobjets blob d’ajout et les objets blob de pages. Vous spécifiez le type de l'objet blob au moment de sa création. Une fois l’objet blob créé, son type ne peut pas être modifié et il peut être mis à jour uniquement à l’aide d’opérations appropriées pour ce type d’objet blob, c’est-à-dire l’écriture d’un bloc ou d’une liste de blocs dans un objet blob de blocs, l’ajout de blocs à un objet blob d’ajout et l’écriture de pages dans un objet blob de pages.
Tous les objets blob reflètent immédiatement les modifications validées. Chaque version de l'objet blob contient une balise unique, appelée ETag, que vous pouvez utiliser avec des conditions d'accès pour vous assurer de ne modifier qu'une instance spécifique de l'objet blob.
Tout objet blob peut être loué pour un accès en écriture exclusif. Quand un objet blob est loué, seuls les appels qui incluent l'ID de bail actuel peuvent modifier l'objet blob ou ses blocs (pour des objets blob de blocs).
Tout objet blob peut être dupliqué dans un instantané. Pour plus d’informations sur les instantanés, consultez Création d’un instantané d’un objet blob.
Notes
Les objets blob dans l’émulateur de stockage Azure sont limités à une taille maximale de 2 Gio.
À propos des objets blob de blocs
Les objets blob de blocs sont optimisés pour charger efficacement de grandes quantités de données. Les objets blob de blocs sont composés de blocs, chacun d’eux étant identifié par un ID de bloc. Un objet blob de blocs peut inclure jusqu’à 50 000 blocs. Chaque bloc d’un objet blob de blocs peut avoir une taille différente, jusqu’à la taille maximale autorisée pour la version de service en cours d’utilisation. Pour créer ou modifier un objet blob de blocs, écrivez un ensemble de blocs via l’opération Put Block , puis validez les blocs dans un objet blob avec l’opération Put Block List .
Les objets blob dont la taille est inférieure à une certaine taille (déterminée par la version du service) peuvent être chargés dans leur intégralité avec une seule opération d’écriture via Put Blob.
Le tableau suivant décrit les tailles maximales de blocs et d’objets blob autorisées par la version du service.
Version du service | Taille de bloc maximale (via Put Block) | Taille de blob maximale (via Put Block List) | Taille de blob maximale via une seule opération d’écriture (via Put Blob) |
---|---|---|---|
Version 2019-12-12 et ultérieure | 4 000 Mio | Environ 190,7 Tio (4 000 Mio X 50 000 blocs) | 5 000 Mio |
De la version 2016-05-31 à la version 2019-07-07 | 100 Mio | Environ 4,75 Tio (100 Mio X 50 000 blocs) | 256 Mio |
Versions antérieures à 2016-05-31 | 4 Mio | Environ 195 Gio (4 Mio X 50 000 blocs) | 64 Mio |
Les clients de stockage ont par défaut un chargement d’objet blob unique maximal de 128 Mio, pouvant être défini dans la bibliothèque cliente Stockage Azure pour .NET version 11 à l’aide de la propriété SingleBlobUploadThresholdInBytes de l’objet BlobRequestOptions . Quand le téléchargement d'un objet blob de blocs dépasse la valeur de cette propriété, les clients de stockage fractionnent le fichier en blocs. Vous pouvez définir le nombre de threads utilisés pour charger les blocs en parallèle par requête à l’aide de la propriété ParallelOperationThreadCount de l’objet BlobRequestOptions .
Quand vous téléchargez un bloc dans un objet BLOB de votre compte de stockage, il est associé à l'objet BLOB de blocs spécifié, mais il ne fait pas partie de l'objet BLOB tant que vous n'avez pas validé une liste de blocs incluant l'ID du nouveau bloc. Les nouveaux blocs restent en état non validé tant qu'ils ne sont pas spécifiquement validés ou ignorés. Il peut y avoir un maximum de 100 000 blocs non validés. L'écriture d'un bloc ne met pas à jour l'heure de dernière modification d'un objet blob existant.
Les objets blob de blocs incluent des fonctionnalités qui vous aident à gérer les fichiers volumineux sur un réseau. Avec un objet blob de blocs, vous pouvez télécharger plusieurs blocs en parallèle pour réduire le temps de téléchargement. Chaque bloc peut inclure un hachage MD5 pour vérifier le transfert, vous pouvez alors suivre la progression du téléchargement et renvoyer des blocs selon vos besoins. Vous pouvez télécharger des blocs dans n'importe quel ordre et déterminer leur séquence à l'étape finale de validation de la liste de blocs. Vous pouvez aussi télécharger un nouveau bloc pour remplacer un bloc validé existant associé au même ID de bloc. Vous avez une semaine pour valider les blocs dans un objet BLOB avant qu'ils soient ignorés. Tous les blocs non validés sont ignorés quand ils sont exclus lors d'une opération de validation de liste de blocs.
Vous pouvez modifier un objet blob de blocs existant en insérant, remplaçant ou supprimant des blocs existants. Après avoir téléchargé le ou les blocs modifiés, vous pouvez valider une nouvelle version de l'objet blob en validant les nouveaux blocs en même temps que les blocs existants que vous souhaitez conserver en une seule opération de validation. Pour insérer la même plage d'octets à deux emplacements différents de l'objet blob validé, vous pouvez valider le même bloc à deux emplacements pendant la même opération de validation. Pour toutes les opérations de validation, si tous les blocs ne sont pas trouvés, l'opération entière de validation échoue avec une erreur et l'objet blob n'est pas modifié. Tout engagement de bloc remplace les propriétés et métadonnées existantes de l’objet blob et ignore tous les blocs non validés.
Les ID de bloc sont des chaînes de longueur égale dans un objet blob. Le code client de bloc utilise généralement le codage en base 64 pour normaliser les chaînes en longueurs égales. Dans le codage en base 64, la chaîne précodée doit mesurer 64 octets maximum. Les valeurs d'ID de bloc peuvent être dupliquées dans différents objets blob.
Si vous écrivez un bloc pour un objet blob qui n'existe pas, un nouvel objet blob de blocs est créé avec une longueur de zéro octet. Cet objet blob apparaît dans les listes d'objets blob qui incluent les objets blob non validés. Si vous ne commitez aucun bloc sur cet objet blob, celui-ci et ses blocs non validés seront ignorés une semaine après le dernier chargement réussi du bloc. Tous les blocs non validés sont également ignorés quand un nouvel objet blob de même nom est créé en une seule étape (au lieu du processus en deux étapes de téléchargement puis validation des blocs).
À propos des objets blob de pages
Les objets blob de pages sont une collection de pages de 512 octets optimisées pour les opérations aléatoires de lecture et d'écriture. Pour créer un objet blob de pages, vous initialisez l'objet blob de pages et spécifiez la taille maximale qu'il pourra atteindre. Pour ajouter ou mettre à jour le contenu d’un objet blob de pages, vous écrivez une ou plusieurs pages en spécifiant un décalage et une plage qui s’alignent tous deux sur les limites des pages de 512 octets. Une écriture dans un objet blob de page peut remplacer une seule page, certaines pages ou jusqu’à 4 Mio de l’objet blob de page. Les écritures dans les objets blob de pages se produisent sur place et sont immédiatement validées dans l'objet blob. La taille maximale d’un objet blob de pages est de 8 Tio.
Les disques de machine virtuelle Azure sont sauvegardés par des objets blob de pages. Azure propose deux types de stockage sur disque durable : premium et standard. Le stockage Premium pour les objets blob de pages est conçu pour les charges de travail de machine virtuelle Azure qui nécessitent des performances élevées cohérentes et une faible latence. Pour plus d’informations, consultez la section Disques SSD Premium de l’article Sélectionner un type de disque pour les machines virtuelles IaaS. Pour plus d’informations sur les objectifs de scalabilité du stockage Premium pour les objets blob de pages, consultez Objectifs de scalabilité et de performances du stockage Azure.
À propos des objets blob d’ajout
Un objet blob d’ajout est composé de blocs et est optimisé pour les opérations d’ajout. Lorsque vous modifiez un objet blob d’ajout, les blocs sont ajoutés à la fin de l’objet blob uniquement, via l’opération Ajouter un bloc . La mise à jour ou la suppression de blocs existants n’est pas prise en charge. Contrairement à un objet blob de blocs, un objet blob d’ajout n’expose pas ses ID de bloc.
Chaque bloc d’un objet blob d’ajout peut avoir une taille différente, jusqu’à un maximum de 4 Mio, et un objet blob d’ajout peut inclure jusqu’à 50 000 blocs. La taille maximale d’un objet blob d’ajout est donc légèrement supérieure à 195 Gio (4 Mio x 50 000 blocs).