Objets composites

Accéder aux exemples

Cette page décrit les objets composites, que vous créez à partir d'objets existants sans transférer de données d'objet supplémentaires. Les objets composites sont utiles pour ajouter des éléments à un objet existant, ainsi que pour recréer des objets que vous avez importés en parallèle sous la forme de composants multiples.

Opération de composition

L'opération de composition concatène les données dans une séquence donnée d'objets sources pour créer un objet appelé objet composite. Les objets sources doivent tous :

  • appartenir à la même classe de stockage ;
  • être stockés dans le même bucket Cloud Storage ;

Lorsque vous effectuez une composition :

  • Les objets sources ne sont pas affectés.
  • Vous pouvez utiliser entre 1 et 32 objets sources.
  • Les objets sources peuvent eux-mêmes être des objets composites.

L'objet composite résultant d'une composition :

  • Dispose de la même classe de stockage que les objets sources.
  • Ne change pas si les objets sources sont remplacés ou supprimés par la suite.

Lorsque vous utilisez gsutil pour effectuer une composition d'objet, la valeur Content-Type de l'objet obtenu correspond à la valeur Content-Type du premier objet source.

Métadonnées des objets composites

Il existe plusieurs différences entre les métadonnées d'un objet composite et les métadonnées des autres objets :

  • Les objets composites ne possèdent pas de champ de métadonnées de hachage MD5.

  • La valeur ETag d'un objet composite n'est pas basée sur un hachage MD5, et le code client ne doit faire aucune hypothèse concernant les ETags des objets composites, si ce n'est qu'ils changent chaque fois que l'objet sous-jacent est modifié conformément à la spécification IETF pour HTTP/1.1.

  • Chaque objet composite possède un champ de métadonnées nombre de composants, qui compte le nombre d'objets non composites contenus dans l'objet composite.

    • Si vous réécrivez un objet composite dans un autre emplacement et/ou une autre classe de stockage, vous obtenez alors un objet composite avec un nombre de composants égal à 1.

Contrôle de l'intégrité des objets composites

Cloud Storage utilise CRC32C pour contrôler l'intégrité de chaque objet source lors de l'importation et pour permettre à l'utilisateur à l'origine de l'appel d'effectuer le même type de contrôle sur l'objet composite obtenu lors de son téléchargement. CRC32C est un code de détection d'erreur pouvant être calculé efficacement à partir des valeurs CRC32C de ses composants. Votre application doit utiliser CRC32C comme suit :

  • Lorsque vous importez des objets sources, calculez le code CRC32C pour chaque objet à l'aide d'une bibliothèque CRC32C (telle que l'une de celles répertoriées ci-dessous) et incluez cette valeur dans votre requête. En fonction des valeurs que vous fournissez, Cloud Storage valide chaque importation.
  • L'opération de composition vérifie automatiquement que les objets sources sont correctement assemblés et ignore toute valeur CRC32C que vous fournissez lors de la requête de composition. Un code CRC32C de l'objet composite obtenu est renvoyé dans la réponse.
  • Si votre application peut modifier les objets sources entre le moment où ils sont importés et le moment où ils sont composés, spécifiez des noms propres aux générations pour les objets sources afin d'éviter les conditions de concurrence. Vous pouvez également créer une valeur CRC32C à partir des valeurs CRC32C des objets sources prévus et les comparer à la valeur CRC32C renvoyée par l'opération de composition.
  • Lors du téléchargement, calculez le code CRC32C de l'objet téléchargé et comparez-le à la valeur incluse dans la réponse.

Les bibliothèques permettant de calculer les valeurs CRC32C incluent :

Ajouts et modifications limités

Vous pouvez utiliser l'opération de composition pour effectuer des ajouts et des modifications d'objets limités.

Pour effectuer un ajout, vous devez importer des données à un nouvel objet temporaire, composer l'objet que vous souhaitez ajouter avec cet objet temporaire, nommer la sortie de l'opération de composition comme l'objet d'origine (facultatif) et supprimer l'objet temporaire.

Par exemple, dans gsutil, la série de commandes permettant d'ajouter la chaîne new data à un objet Cloud Storage existant est la suivante:

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

Vous pouvez également utiliser la composition pour apporter des modifications élémentaires aux objets. Par exemple, vous avez la possibilité de composer un objet X à partir de la séquence {Y1, Y2, Y3}, de remplacer le contenu de Y2 et de recomposer X à partir des mêmes composants. Notez que cette opération nécessite que Y1, Y2 et Y3 ne soient pas supprimés. Ces composants, ainsi que l'objet composite, vous seront donc facturés.

Étape suivante