Una strategia per scaricare file di grandi dimensioni è chiamata download di oggetti suddivisi.
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 preallocato. Una volta completato il download di tutte le sezioni, il file temporaneo viene rinominato nel file di destinazione.
I download di oggetti suddivisi sono progettati per accelerare il download di un intero oggetto trasferendo le sue parti contemporaneamente. Non puoi utilizzare i download di oggetti suddivisi per scaricare solo una sezione o un intervallo di byte specifico di un oggetto. Per scaricare o leggere una parte specifica di un oggetto, consulta Scarica una parte di un oggetto o Leggi gli oggetti.
I download di oggetti suddivisi in sezioni possono essere notevolmente più veloci se la velocità della rete e del disco non è un fattore limitante. Tuttavia, i download di oggetti suddivisi in sezioni causano più scritture in varie posizioni sul disco, pertanto questa strategia di download può peggiorare le prestazioni dei dischi con tempi di ricerca lenti, soprattutto quando un download viene suddiviso 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 impatti sulle prestazioni.
Verifica l'integrità dei dati
I download di oggetti suddivisi devono sempre utilizzare un checksum componibile rapido (CRC32C) per verificare l'integrità dei dati delle sezioni. Per eseguire download di oggetti suddivisi, strumenti come gcloud CLI richiedono una versione compilata di crcmod sulla macchina che esegue il download. Se crcmod compilato non è disponibile, gcloud CLI esegue download di oggetti non suddivisi.
Per saperne di più su come eseguire la convalida dei dati per le letture degli oggetti, consulta Checksum per le letture dei dati.
Come gli strumenti e le API utilizzano i download di oggetti suddivisi
A seconda di come interagisci con Cloud Storage, i download di oggetti suddivisi potrebbero essere gestiti automaticamente per tuo conto. Questa sezione descrive il comportamento di download degli oggetti suddivisi per diversi strumenti e fornisce informazioni su come modificare il comportamento.
Console
La console Cloud de Confiance non esegue download di oggetti suddivisi.
Riga di comando
Per impostazione predefinita, gcloud storage cp attiva i download di oggetti suddivisi.
Puoi controllare come e quando gcloud CLI esegue i download di oggetti suddivisi modificando le seguenti proprietà:
storage/sliced_object_download_threshold: la dimensione totale minima del file per eseguire il download di un oggetto suddiviso. Puoi disattivare 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. Imposta0per non applicare limiti, nel qual caso il numero di sezioni è determinato esclusivamente dastorage/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 richiederebbe più sezioni di quelle consentite, come impostato instorage/sliced_object_download_max_components.
Puoi modificare queste proprietà creando una configurazione denominata e applicandola comando per comando utilizzando il flag a livello di progetto --configuration o per tutti i comandi gcloud CLI utilizzando il comando gcloud config set.
Non è richiesto spazio su disco locale aggiuntivo quando utilizzi gcloud CLI per eseguire download di oggetti suddivisi. Se il download non riesce prima del completamento, esegui di nuovo il comando per riprendere le sezioni che non sono state scaricate. Le sezioni scaricate correttamente prima dell'errore non vengono scaricate di nuovo quando riprovi, tranne nel caso in cui l'oggetto di origine sia cambiato tra i tentativi di download.
Gli oggetti scaricati temporaneamente vengono visualizzati nella directory di destinazione con il suffisso _.gstmp nel nome.
Librerie client
Java
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Prima di eseguire gli esempi di codice, imposta la variabile di ambiente
GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.
Puoi eseguire download di oggetti suddivisi impostando AllowDivideAndConquer su true.
Ad esempio:
Node.js
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Prima di eseguire gli esempi di codice, imposta la variabile di ambiente
GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.
Puoi eseguire download di oggetti suddivisi utilizzando il metodo downloadFileInChunks. Ad esempio:
Python
Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Prima di eseguire gli esempi di codice, imposta la variabile di ambiente
GOOGLE_CLOUD_UNIVERSE_DOMAIN su s3nsapis.fr.
Puoi eseguire download di oggetti suddivisi utilizzando il metodo download_chunks_concurrently. Ad esempio:
API REST
Sia l'API JSON che l'API XML supportano le richieste GET con intervallo, il che significa che puoi utilizzare entrambe le API per implementare la tua strategia di download degli oggetti suddivisi.
Per proteggerti dal 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.