Una strategia per scaricare file di grandi dimensioni è denominata download di oggetti a fette.
In questo tipo di download, vengono effettuate in parallelo richieste GET
con intervallo di date, memorizzando i dati in un file di destinazione temporaneo e preallocato. Una volta completato il download di tutte le sezioni, il file temporaneo viene rinominato nel file di destinazione.
I download di oggetti suddivisi possono essere molto più rapidi se la velocità di rete e del disco non sono fattori limitativi. Tuttavia, i download di oggetti con sezioni causano più scritture in diverse posizioni sul disco, quindi questa strategia di download può ridurre le prestazioni dei dischi con tempi di ricerca lenti, soprattutto quando si suddivide un download in un numero elevato di sezioni. Strumenti come Google Cloud CLI hanno valori predefiniti bassi per il numero di sezioni che creano per ridurre al minimo la possibilità di un impatto sulle prestazioni.
I download di oggetti con sezioni devono sempre utilizzare un checksum componibile veloce (CRC32C) per verificare l'integrità dei dati delle sezioni. Per eseguire download di oggetti con sezioni, strumenti come gcloud CLI richiedono una versione compilata di crcmod sulla macchina che esegue il download. Se crcmod compilato non è disponibile, gcloud CLI esegue invece download di oggetti non suddivisi.
In che modo strumenti e API utilizzano i download di oggetti con sezioni
A seconda di come interagisci con Cloud Storage, i download di oggetti con sezioni potrebbero essere gestiti automaticamente per tuo conto. Questa sezione descrive il comportamento di download degli oggetti con sezioni per diversi strumenti e fornisce informazioni su come modificare il comportamento.
Console
La console Google Cloud non esegue download di oggetti suddivisi.
Riga di comando
Per impostazione predefinita, gcloud storage cp
consente i download di oggetti con sezioni.
Puoi controllare come e quando gcloud CLI esegue i download di oggetti suddivisi modificando le seguenti proprietà:
storage/sliced_object_download_threshold
: le dimensioni minime totali del file per eseguire il download di un oggetto con sezioni. Puoi disabilitare tutti i download di oggetti suddivisi impostando questo valore su0
.storage/sliced_object_download_max_components
: il numero massimo di sezioni da utilizzare nel download. Imposta0
per nessun limite, nel qual caso il numero di sezioni è determinato esclusivamente dastorage/sliced_object_download_component_size
.storage/sliced_object_download_component_size
: le dimensioni di destinazione per ogni sezione di download. Questa proprietà viene ignorata se le dimensioni totali del file sono così grandi che il download di sezioni di questa dimensione richiede più sezioni di quelle consentite, come impostato instorage/sliced_object_download_max_components
.
Puoi modificare queste proprietà creando una configurazione con nome e applicando la configurazione in base al comando utilizzando il flag a livello di progetto --configuration
oppure per tutti i comandi dell'interfaccia a riga di comando gcloud utilizzando il comando gcloud config set
.
Non è necessario spazio su disco locale aggiuntivo quando si utilizza gcloud CLI per eseguire download di oggetti con sezioni. Se il download non va a buon fine prima del completamento, esegui di nuovo il comando per riprendere le sezioni non riuscite. Le sezioni scaricate correttamente prima dell'errore non vengono scaricate nuovamente quando riprovi, tranne nel caso in cui l'oggetto di origine sia cambiato tra un tentativo di download e l'altro.
Gli oggetti scaricati temporanei vengono visualizzati nella directory di destinazione con il suffisso _.gstmp
nel nome.
Librerie client
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Puoi eseguire download di oggetti con sezioni impostando allowDivideAndConquer su True Ad esempio:
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Puoi eseguire download di oggetti con sezioni utilizzando il metodo downloadFileInChunks
. Ad esempio:
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Puoi eseguire download di oggetti con sezioni utilizzando il metodo download_chunks_concurrently
. Ad esempio:
API REST
Sia l'API JSON che l'API XML supportano richieste GET
con intervallo, il che significa che puoi utilizzare entrambe le API per implementare la tua strategia di download di oggetti con sezioni.
Per evitare il danneggiamento dei dati dovuto alla modifica 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.