Informazioni sui BLOB a blocchi, i BLOB di accodamento e i BLOB di pagine

Il servizio di archiviazione offre tre tipi di BLOB, BLOB in blocchi, BLOBdi accodamento e BLOB di pagine. Il tipo di BLOB viene specificato al momento della creazione del BLOB. Dopo aver creato il BLOB, il relativo tipo non può essere modificato e può essere aggiornato solo usando le operazioni appropriate per tale tipo di BLOB, ovvero la scrittura di un blocco o un elenco di blocchi in un BLOB a blocchi, l'aggiunta di blocchi a un BLOB di accodamento e la scrittura di pagine in un BLOB di pagine.

Tutti i Blob riflettono subito le modifiche di cui è stato eseguito il commit. Ogni versione del Blob ha un tag univoco, denominato ETag, che è possibile utilizzare con condizioni di accesso per garantire che venga modificata solo un'istanza specifica del Blob.

Qualsiasi Blob può essere associato a un lease per accesso in scrittura esclusivo. Quando un Blob è associato a un lease, solo le chiamate che includono l'ID di lease corrente possono modificare il Blob o i relativi blocchi (per i Blob in blocchi).

Qualsiasi Blob può essere duplicato in uno snapshot. Per informazioni sugli snapshot, vedere Creazione di uno snapshot di un BLOB.

Nota

I BLOB nell'emulatore di archiviazione di Azure sono limitati a una dimensione massima di 2 GiB.

Informazioni sui BLOB a blocchi

I BLOB a blocchi sono ottimizzati per il caricamento di grandi quantità di dati in modo efficiente. I BLOB a blocchi sono costituiti da blocchi, ognuno dei quali è identificato da un ID blocco. Un BLOB a blocchi può includere fino a 50.000 blocchi. Ogni blocco in un BLOB a blocchi può essere una dimensione diversa, fino alle dimensioni massime consentite per la versione del servizio in uso. Per creare o modificare un BLOB a blocchi, scrivere un set di blocchi tramite l'operazione Put Block e quindi eseguire il commit dei blocchi in un BLOB con l'operazione Put Block List .

I BLOB che sono inferiori a una determinata dimensione (determinata dalla versione del servizio) possono essere caricati nell'intera durata con un'operazione di scrittura singola tramite Put BLOB.

La tabella seguente illustra le dimensioni massime di blocchi e BLOB consentite dalla versione del servizio.

Versione del servizio Dimensioni massime dei blocchi (tramite Put Block) Dimensioni massime dei BLOB (tramite Put Block List) Dimensioni massime dei BLOB tramite singola operazione di scrittura (tramite Put BLOB)
Versione 2019-12-12 e successive 4000 MiB Circa 190.7 TiB (4000 MiB X 50.000 blocchi) 5000 MiB
Dalla versione 2016-05-31 alla versione 2019-07-07 100 MiB Approssimativamente 4,75 TiB (blocchi di 100 MiB x 50.000) 256 MiB
Versioni precedenti alla 2016-05-31 4 MiB Approssimativamente 195 GiB (blocchi di 4 MiB x 50.000) 64 MiB

Per impostazione predefinita, i client di archiviazione hanno un caricamento massimo di BLOB singolo 128 MiB, impostabili nella libreria client di Archiviazione di Azure per .NET versione 11 usando la proprietà SingleBlobUploadThresholdInBytes dell'oggetto BLOBRequestOptions . Quando il caricamento di un Blob in blocchi è superiore al valore di questa proprietà, i client di archiviazione suddividono il file in blocchi. È possibile impostare il numero di thread usati per caricare i blocchi in parallelo in parallelo usando la proprietà ParallelOperationThreadCount dell'oggetto BLOBRequestOptions .

Quando si carica un blocco in un Blob nell'account di archiviazione, esso viene associato al Blob in blocchi specificato, ma non diventa parte del Blob finché non si esegue il commit di un elenco di blocchi che include l'ID del nuovo blocco. Per i nuovi blocchi lo stato è senza commit finché non ne viene eseguito il commit o non vengono rimossi. Possono essere presenti un massimo di 100.000 blocchi non inviati. La scrittura di un blocco non aggiorna l'ora dell'ultima modifica di un Blob esistente.

I Blob in blocchi includono funzionalità che consentono di gestire file di grandi dimensioni nelle reti. Con un Blob in blocchi, è possibile caricare più blocchi in parallelo per ridurre il tempo di caricamento. Ogni blocco può includere un hash MD5 per verificare il trasferimento, in modo da tenere traccia dell'avanzamento del caricamento e inviare di nuovo i blocchi secondo le esigenze. È possibile caricare i blocchi in qualsiasi ordine e determinarne la sequenza nel passaggio finale del commit dell'elenco di blocchi. È inoltre possibile caricare un nuovo blocco per sostituire un blocco esistente di cui non è stato eseguito il commit dello stesso ID di blocco. Si ha una settimana di tempo per eseguire il commit dei blocchi in un Blob prima che vengano rimossi. Tutti i blocchi di cui non è stato eseguito il commit vengono rimossi anche quando viene eseguita l'operazione di commit di un elenco di blocchi che non li include.

È possibile modificare un Blob in blocchi esistente inserendo, sostituendo o eliminando blocchi esistenti. Dopo aver caricato il blocco o i blocchi modificati, è possibile eseguire il commit di una nuova versione del Blob eseguendo il commit dei nuovi blocchi con i blocchi esistenti che si desidera mantenere tramite una singola operazione di commit. Per inserire lo stesso intervallo di byte in due posizioni diverse del Blob di cui è stato eseguito il commit, è possibile eseguire il commit dello stesso blocco in due posizioni all'interno della stessa operazione di commit. Se un blocco non viene trovato, qualsiasi operazione di commit ha esito negativo, viene restituito un errore e il Blob non viene modificato. Qualsiasi impegno a blocchi sovrascrive le proprietà e i metadati esistenti del BLOB ed elimina tutti i blocchi non inviati.

Gli ID di blocco sono stringhe di uguale lunghezza all'interno di un Blob. Il codice client di blocco in genere utilizza la codifica Base 64 per normalizzare le stringhe alla stessa lunghezza. Quando si utilizza la codifica Base 64, la stringa precodificata deve essere al massimo di 64 byte. I valori di ID di blocco possono essere duplicati in Blob diversi.

Se si scrive un blocco per un Blob che non esiste, viene creato un nuovo Blob in blocchi con una lunghezza pari a zero byte. Questo Blob verrà visualizzato negli elenchi che includono Blob di cui non è stato eseguito il commit. Se non si esegue il commit di alcun blocco in questo BLOB, i blocchi non inviati verranno eliminati una settimana dopo l'ultimo caricamento del blocco riuscito. Anche tutti i blocchi di cui non è stato eseguito il commit vengono rimossi quando viene creato un nuovo Blob con lo stesso nome in un unico passaggio, anziché con un processo di caricamento e commit in due passaggi.

Informazioni sui BLOB di pagine

Un BLOB di pagine rappresenta una raccolta di pagine da 512 byte ottimizzate per operazioni di lettura e scrittura casuali. Per creare un Blob di pagine, inizializzarlo e specificarne le dimensioni massime. Per aggiungere o aggiornare il contenuto di un BLOB di pagine, si scrive una pagina o una pagina specificando un offset e un intervallo che si allineano a 512 byte. Una scrittura in un BLOB di pagine può sovrascrivere una sola pagina, alcune pagine o fino a 4 MiB del BLOB di pagina. Le scritture nei Blob di pagine avvengono sul posto e ne viene immediatamente eseguito il commit nel Blob. La dimensione massima per un BLOB di pagine è 8 TiB.

I dischi delle macchine virtuali di Azure sono supportati da BLOB di pagine. Azure offre due tipi di archiviazione su disco durevole: Premium e standard. L'archiviazione Premium per i BLOB di pagine è progettata per i carichi di lavoro delle macchine virtuali di Azure che richiedono prestazioni elevate coerenti e bassa latenza. Per informazioni dettagliate, vedere la sezione Unità ssd (Premium) dell'articolo Selezionare un tipo di disco per le macchine virtuali IaaS. Per informazioni sulle destinazioni di scalabilità per l'archiviazione Premium per i BLOB di pagine, vedere Obiettivi di scalabilità e prestazioni di Archiviazione di Azure.

Informazioni sui BLOB di accodamento

Un BLOB di accodamento è costituito da blocchi ed è ottimizzato per le operazioni di accodamento. Quando si modifica un BLOB di accodamento, i blocchi vengono aggiunti alla fine del BLOB solo tramite l'operazione Append Block . L'aggiornamento o l'eliminazione di blocchi esistenti non sono supportati. A differenza di un BLOB a blocchi, un BLOB di accodamento non espone i relativi ID di blocco.

Ogni blocco in un BLOB di accodamento può essere di dimensioni diverse, fino a un massimo di 4 MiB e un BLOB di accodamento può includere fino a 50.000 blocchi. La dimensione massima di un BLOB di accodamento è quindi leggermente superiore a 195 GiB (4 MiB X 50.000 blocchi).

Vedere anche