Oggetti compositi

Crea

Questa pagina descrive gli oggetti compositi, creati a partire da oggetti esistenti senza trasferire ulteriori dati dell'oggetto. Gli oggetti compositi sono utili per effettuare l'aggiunta a un oggetto esistente, nonché per ricreare gli oggetti che hai caricato come più componenti in parallelo.

Operazione di scrittura

L'operazione di composizione concatena i dati in una determinata sequenza di oggetti di origine per creare un nuovo oggetto chiamato oggetto composto. Tutti 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 a loro volta essere oggetti compositi.

L'oggetto composito risultante da una composizione:

  • Ha 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 dell'oggetto, per l'oggetto risultante è impostato un Content-Type che corrisponde al valore Content-Type del primo oggetto di origine.

Metadati degli oggetti composti

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

  • Gli oggetti composti non hanno un campo di metadati hash MD5.

  • Il valore ETag di un oggetto composito non si basa su un hash MD5 e il codice client non deve fare ipotesi sugli ETag dell'oggetto composito, tranne che cambia ogni volta che l'oggetto sottostante cambia in base alle specifiche IETF per HTTP/1.1.

  • Ogni oggetto composto ha un campo di metadati per il conteggio dei componenti, in cui viene conteggiato il numero di oggetti non composti contenuti all'interno dell'oggetto composito.

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

Controllo dell'integrità di oggetti composti

Cloud Storage utilizza CRC32C per il controllo dell'integrità di ogni oggetto di origine al momento del caricamento e per consentire al chiamante di eseguire un controllo dell'integrità dell'oggetto composito risultante quando viene scaricato. CRC32C è un codice di rilevamento degli errori che può essere calcolato in modo efficiente dai valori CRC32C dei suoi componenti. La tua applicazione dovrebbe utilizzare CRC32C come segue:

  • Quando carichi oggetti di origine, devi calcolare il valore CRC32C per ogni oggetto utilizzando una libreria CRC32C, ad esempio uno di quelli elencati nella pagina Metadati oggetto e includere quel valore nella richiesta. In base ai valori forniti, Cloud Storage convalida ogni caricamento.
  • L'operazione di composizione controlla automaticamente che gli oggetti di origine siano assemblati correttamente e ignora qualsiasi valore CRC32C fornito come parte della richiesta di scrittura. Nella risposta viene restituito un CRC32C dell'oggetto composito risultante.
  • Se l'applicazione può modificare gli oggetti di origine tra il caricamento e la composizione di tali oggetti, è necessario specificare nomi specifici per la generazione degli oggetti di origine per evitare racecondition. In alternativa, puoi creare un valore CRC32C dai valori CRC32C degli oggetti di origine previsti e confrontarlo con il valore CRC32C restituito dall'operazione di scrittura.
  • Al momento del download, devi calcolare il CRC32C dell'oggetto scaricato e confrontarlo con il valore incluso nella risposta.

Aggiunta e modifica limitate

Puoi utilizzare l'operazione di scrittura per aggiungere e modificare un numero limitato di oggetti.

Puoi aggiungere dati caricando i dati in un nuovo oggetto temporaneo, componendo l'oggetto che desideri aggiungere all'oggetto temporaneo e, facoltativamente, assegnando un nome all'output dell'operazione di scrittura uguale all'oggetto originale ed eliminando l'oggetto temporaneo.

Ad esempio, in gcloud CLI, la serie di comandi per aggiungere 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 utilizzare la composizione anche per supportare alcune funzionalità di base della modifica degli oggetti. Ad esempio, puoi comporre un oggetto X dalla sequenza {Y1, Y2, Y3}, sostituire il contenuto di Y2 e ricomporre X da quegli stessi componenti. Tieni presente che ciò richiede che i componenti Y1, Y2 e Y3 vengano lasciati non eliminati, quindi ti verranno addebitati i costi per questi componenti e per quelli composti.

Passaggi successivi