Oggetti compositi

Crea

Questa pagina descrive gli oggetti compositi, che vengono creati da oggetti esistenti senza trasferire dati aggiuntivi degli oggetti. Gli oggetti composti sono utili per aggiungere elementi a un oggetto esistente, nonché per ricreare gli oggetti che hai caricato come più componenti in parallelo.

Operazione di composizione

L'operazione di composizione concatena i dati in una determinata sequenza di oggetti di origine per creare un nuovo oggetto chiamato oggetto composito. Gli oggetti di origine devono:

Quando esegui una composizione:

  • Gli oggetti di origine non sono interessati.
  • Puoi utilizzare da 1 a 32 oggetti di origine.
  • Gli oggetti di origine possono essere essi stessi oggetti compositi.

L'oggetto composito risultante da una composizione:

  • Deve avere la stessa classe di archiviazione degli oggetti di origine.
  • Non cambia se gli oggetti di origine vengono successivamente sostituiti o eliminati.

Quando utilizzi gcloud storage per eseguire la composizione degli oggetti, l'oggetto risultante ha un Content-Type impostato in modo da corrispondere al Content-Type del primo oggetto di origine.

Metadati degli oggetti compositi

Esistono diverse differenze tra i metadati di un oggetto composito e i metadati di altri oggetti:

  • Gli oggetti compositi non hanno un campo dei metadati dell'hash MD5.

  • Il valore ETag di un oggetto composto non si basa su un hash MD5 e il codice client non deve fare supposizioni sugli ETag degli oggetti composti, tranne che cambiano ogni volta che l'oggetto sottostante cambia in base alla specifica IETF per HTTP/1.1.

  • Ogni oggetto composto ha un campo metadati component count (Conteggio componenti), che conteggia il numero di oggetti non composti contenuti nell'oggetto composto.

    • Se riscrivi un oggetto composito in una posizione o in una classe di archiviazione diversa, il risultato è un oggetto composito con un conteggio componenti pari a 1.

Controllo dell'integrità degli oggetti compositi

Cloud Storage utilizza CRC32C per il controllo dell'integrità di ogni oggetto di origine al momento del caricamento e per consentire all'utente chiamante di eseguire un controllo dell'integrità dell'oggetto composito risultante al momento del download. CRC32C è un codice di rilevamento degli errori che può essere calcolato in modo efficiente dai valori CRC32C dei relativi componenti. L'applicazione deve utilizzare CRC32C come segue:

  • Quando carichi gli oggetti di origine, devi calcolare il CRC32C per ogni oggetto utilizzando una libreria CRC32C, ad esempio una di quelle elencate nella pagina Metadati degli oggetti, e includere questo valore nella richiesta. In base ai valori che fornisci, Cloud Storage convalida ogni caricamento.
  • L'operazione di composizione verifica automaticamente che gli oggetti di origine siano assemblati correttamente e ignora qualsiasi valore CRC32C fornito nell'ambito della richiesta di composizione. Nella risposta viene restituito un CRC32C dell'oggetto composito risultante.
  • Se la tua applicazione potrebbe modificare gli oggetti di origine tra il momento del caricamento e la loro composizione, devi specificare nomi specifici per la generazione degli oggetti di origine per evitare condizioni di gara. In alternativa, puoi generare un valore CRC32C dai valori CRC32C degli oggetti di origine previsti e confrontarlo con il valore CRC32C restituito dall'operazione di composizione.
  • Al momento del download, devi calcolare il CRC32C dell'oggetto scaricato e confrontarlo con il valore incluso nella risposta.

Aggiunta e modifica con limitazioni

Puoi utilizzare l'operazione di composizione per eseguire aggiunte e modifiche limitate degli oggetti.

Per eseguire l'accodamento, carica i dati in un nuovo oggetto temporaneo, componi l'oggetto che vuoi accodare con questo oggetto temporaneo, assegna eventualmente lo stesso nome all'output dell'operazione di composizione dell'oggetto originale ed elimina l'oggetto temporaneo.

Ad esempio, in gcloud CLI, la serie di comandi per appendere la stringa new data a un oggetto Cloud Storage esistente è la seguente:

$ echo 'new data' | gcloud storage cp - gs://bucket/temporary_object
$ gcloud storage objects compose gs://bucket/object_to_append gs://bucket/temporary_object \
    gs://bucket/object_to_append
$ gcloud storage rm gs://bucket/temporary_object

Puoi anche utilizzare la composizione per supportare una versione di base della modifica degli oggetti. Ad esempio, puoi comporre un oggetto X dalla sequenza {Y1, Y2, Y3}, sostituire i contenuti di Y2 e ricomporre X dagli stessi componenti. Tieni presente che questo richiede che Y1, Y2 e Y3 non vengano eliminati, pertanto ti verrà addebitato il costo di questi componenti e del composito.

Passaggi successivi