Download di oggetti a fette

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Una strategia per scaricare file di grandi dimensioni è detta download di oggetti tagliati. In un download di questo tipo, le richieste GET con intervallo vengono effettuate in parallelo, archiviando i dati all'interno di un file di destinazione temporaneo e preallocato. Una volta completato il download di tutte le sezioni, il file temporaneo viene rinominato in file di destinazione.

Il download di oggetti a fette può essere molto più rapido se la velocità della rete e del disco non limita i fattori; tuttavia, i download di oggetti con fetta possono causare più scritture in dischi diversi, quindi questa strategia di download può ridurre le prestazioni dei dischi con tempi di ricerca lenti, soprattutto quando si interrompe un download in un numero elevato di sezioni. Gli strumenti come gcloud e gsutil hanno valori predefiniti bassi per il numero di sezioni che creano per ridurre al minimo la possibilità di effetti sulle prestazioni.

I download di oggetti a fette devono sempre utilizzare un checksum componibile rapido (CRC32C) per verificare l'integrità dei dati delle sezioni. Per eseguire il download di oggetti tagliati, gli strumenti come gsutil e gcloud richiedono una versione compilata di crcmod sul computer che esegue il download. Se il file crcmod compilato non è disponibile, gsutil e gcloud eseguono invece il download di oggetti non tagliati.

Assistenza gcloud

Per impostazione predefinita, gcloud storage cp abilita i download di oggetti con sezioni tagliate. Puoi controllare come e quando gcloud esegue i download degli oggetti con tag modificando le seguenti proprietà:

  • storage/sliced_object_download_threshold: la dimensione minima totale del file per eseguire un download di oggetti con sezioni. Puoi disattivare i download di tutti gli oggetti impostando il valore su 0.

  • storage/sliced_object_download_max_components: il numero massimo di sezioni da utilizzare nel download. Imposta 0 senza alcun limite. In questo caso il numero di sezioni viene determinato esclusivamente da storage/sliced_object_download_component_size.

  • storage/sliced_object_download_component_size: la dimensione target per ogni sezione di download. Questa proprietà viene ignorata se le dimensioni totali del file sono così grandi che il download di sezioni di queste dimensioni richiedere più sezioni di quelle consentite, come impostato in storage/sliced_object_download_max_components.

Puoi modificare queste proprietà creando una configurazione denominata e applicando la configurazione in base ai singoli comandi utilizzando il flag a livello di progetto o per tutti i comandi gcloud tramite il comando gcloud config set.

Non è necessario spazio aggiuntivo su disco locale quando utilizzi gcloud per eseguire il download di oggetti con tag suddivisi. Se il download non riesce prima del completamento, esegui di nuovo il comando gcloud per riprendere le sezioni non riuscite. Le sezioni scaricate correttamente prima dell'errore non vengono scaricate nuovamente quando si esegue un nuovo tentativo, tranne nel caso in cui l'oggetto di origine sia stato modificato tra un tentativo di download e l'altro.

Gli oggetti scaricati temporaneamente vengono visualizzati nella directory di destinazione con il suffisso _.gstmp nel nome.

Assistenza gsutil

Per impostazione predefinita, gsutil cp abilita i download di oggetti con sezioni tagliate. Puoi controllare come e quando gsutil esegue i download di oggetti con tag modificando i seguenti parametri:

  • sliced_object_download_threshold: la dimensione minima totale del file per l'esecuzione di un download di oggetti con sezioni. Puoi disattivare i download di tutti gli oggetti impostando il valore su 0.

  • sliced_object_download_max_components: il numero massimo di sezioni da utilizzare nel download. Imposta 0 senza alcun limite. In questo caso il numero di sezioni è determinato esclusivamente da sliced_object_download_component_size.

  • sliced_object_download_component_size: la dimensione target per ogni sezione di download. Questo parametro viene ignorato se le dimensioni totali del file sono talmente grandi che il download di sezioni di queste dimensioni richiederebbe più sezioni di quelle consentite, come impostato in sliced_object_download_max_components.

Puoi modificare questi parametri in base ai singoli comandi utilizzando l'opzione globale -o o per tutti i comandi gsutil modificando il file di configurazione .boto.

Non è necessario spazio su disco locale aggiuntivo quando si utilizza gsutil per eseguire i download di oggetti con tag suddivisi. Se il download non riesce prima del completamento, esegui di nuovo il comando gsutil per riprendere le sezioni non riuscite. Le sezioni che sono state scaricate correttamente prima dell'errore non vengono scaricate nuovamente quando provi a eseguire nuovamente il comando.

Gli oggetti scaricati temporaneamente vengono visualizzati nella directory di destinazione con il suffisso _.gstmp nel nome.

Supporto JSON e XML

Sia l'API JSON che l'API XML supportano più richieste GET, il che significa che puoi utilizzare una delle due API per implementare la tua strategia di download degli oggetti con tag suddiviso.

Per evitare danni ai dati a causa del cambiamento dell'oggetto di origine durante il download, devi fornire il numero di generazione dell'oggetto di origine in ogni richiesta di download per una sezione dell'oggetto.