Objetos compuestos

Crear

En esta página, se describen objetos compuestos, que creaste a partir de objetos existentes sin transferir datos de objetos adicionales. Los objetos compuestos son útiles con el fin de agregar adjuntos a un objeto existente y volver a crear objetos que subiste como varios componentes en paralelo.

Operación de composición

La operación de composición concatena los datos de una secuencia determinada de objetos de origen para crear un objeto nuevo llamado objeto compuesto. Todos los objetos de origen deben cumplir los siguientes requisitos:

Cuando realizas una composición, se dan las siguientes situaciones:

  • Los objetos de origen no se ven afectados.
  • Puedes usar entre 1 y 32 objetos de origen.
  • Los objetos de origen pueden ser objetos compuestos.

El objeto compuesto que resulta de una composición:

  • Tiene la misma clase de almacenamiento que los objetos de origen.
  • No cambia si los objetos de origen se reemplazan o borran más tarde.

Cuando se usa gcloud storage a fin de realizar la composición del objeto, el objeto resultante tiene un Content-Type configurado para que coincida con el Content-Type del primer objeto de origen.

Metadatos de objetos compuestos

Existen varias diferencias entre los metadatos de un objeto compuesto y los metadatos de otros objetos:

  • Los objetos compuestos no tienen un campo de metadatos hash MD5.

  • El valor ETag de un objeto compuesto no se basa en un hash MD5, y el código del cliente no debe hacer suposiciones sobre los ETag de objeto compuesto, excepto que cambian cada vez que el objeto subyacente cambia en la especificación IETF para HTTP/1.1.

  • Cada objeto compuesto tiene un campo de metadatos de recuento de componentes, que cuenta la cantidad de objetos no compuestos que contiene el objeto compuesto.

    • Si reescribes un objeto compuesto en una ubicación o clase de almacenamiento diferente, el resultado será un objeto compuesto con un recuento de componentes de 1.

Verificación de integridad de los objetos compuestos

Cloud Storage usa CRC32C para verificar la integridad de cada objeto de origen en el momento de carga y a fin de permitir que el emisor realice una verificación de integridad del objeto compuesto resultante cuando se descarga. CRC32C es un código de detección de error que se puede calcular con eficiencia a partir de los valores CRC32C de sus componentes. Tu aplicación debería usar CRC32C de la siguiente manera:

  • Cuando subes objetos de origen, deberías calcular el CRC32C de cada objeto con una biblioteca CRC32C, como alguno de los que se enumeran en la página de ETags y hashes e incluir ese valor en tu solicitud. Según los valores que proporciones, Cloud Storage valida cada carga.
  • La operación de composición verifica de forma automática que los objetos de origen se ensamblen de forma correcta e ignora cualquier valor CRC32C que proporciones como parte del requisito de composición. Se muestra un valor CRC32C del objeto compuesto resultante en la respuesta.
  • Si tu aplicación puede cambiar los objetos de origen entre el momento de la carga y la composición de esos objetos, tendrás que especificar los nombres específicos de generación de los objetos de origen a fin de evitar condiciones de carrera. Como alternativa, puedes compilar un valor CRC32C a partir de los valores CRC32C de los objetos de origen deseados y compararlo con el valor CRC32C que muestra la operación de composición.
  • En el momento de la descarga, tienes que calcular el CRC32C del objeto descargado y compararlo con el valor incluido en la respuesta.

Ediciones y agregados limitados

Puedes usar la operación de composición para realizar ediciones y agregados de objetos limitados.

Debes realizar el agregado mediante la carga de datos a un objeto temporal nuevo, lo que compone el objeto que deseas agregar junto con estos datos nuevos. De forma opcional, puedes nombrar al resultado de la operación de composición de la misma forma que el objeto original y borrar el objeto temporal.

Por ejemplo, en la CLI de gcloud, la serie de comandos para agregar la string new data a un objeto de Cloud Storage existente es la siguiente:

$ 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

También puedes usar la composición para que sea compatible con una variante básica de edición de objetos. Por ejemplo, puedes componer un objeto X de la secuencia {Y1, Y2, Y3}, reemplazar el contenido de Y2 y recomponer X de esos mismos componentes. Ten en cuenta que esto requiere que no se borren Y, Y2 ni Y3, por lo que se te facturará por esos componentes y por el compuesto.

Próximos pasos