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 crée un objet composite dont le contenu correspond à la concaténation d'une séquence donnée d'objets sources. Les objets sources doivent tous :

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 obtenu appartient à la même classe de stockage que les objets sources.
  • L'objet composite obtenu 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 composite 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.
  • Pour l'opération de composition, incluez un code CRC32C dans la requête. Cloud Storage répond avec le code CRC32C de l'objet composite, qui peut être validé en créant une valeur CRC32C à partir des valeurs CRC32C des objets sources.
  • 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.
  • 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.

Les bibliothèques permettant de calculer les valeurs CRC32C incluent Boost pour C++, GoogleCloudPlatform crc32c pour Java, crcmod pour Python et digest-crc pour Ruby. Notez également que le code CRC32C est compatible avec les composants matériels des processeurs Intel actuels.

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 ajouter des données à un nouvel objet temporaire, composer l'objet que vous souhaitez ajouter avec ces nouvelles données, nommer la sortie de l'opération de composition comme l'objet d'origine (facultatif) et supprimer l'objet temporaire.

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.

Étapes suivantes