Objetos compuestos

Crear

En esta página se describen los objetos compuestos, que se crean a partir de objetos ya existentes sin transferir datos de objetos adicionales. Los objetos compuestos son útiles para añadir contenido a un objeto, así como para recrear objetos que hayas subido 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 denominado objeto compuesto. Todos los objetos de origen deben cumplir los siguientes requisitos:

Cuando haces una composición:

  • Los objetos de origen no se ven afectados.
  • Puede 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 sustituyen o eliminan posteriormente.

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

Metadatos de objetos compuestos

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

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

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

  • Cada objeto compuesto tiene un campo de metadatos component count, que cuenta el número de objetos no compuestos que contiene el objeto compuesto.

    • Si reescribes un objeto compuesto en otra ubicación o clase de almacenamiento, el resultado es un objeto compuesto con un recuento de componentes de 1.

Comprobación de la integridad de objetos compuestos

Cloud Storage usa CRC32C para comprobar la integridad de cada objeto de origen en el momento de la subida y para permitir que la persona que llama realice una comprobación de integridad del objeto compuesto resultante cuando se descargue. CRC32C es un código de detección de errores que se puede calcular de forma eficiente a partir de los valores CRC32C de sus componentes. Tu aplicación debe usar CRC32C de la siguiente manera:

  • Cuando subas objetos de origen, debes calcular el CRC32C de cada objeto con una biblioteca CRC32C, como una de las que se indican en la página de metadatos de objetos, e incluir ese valor en tu solicitud. En función de los valores que proporciones, Cloud Storage validará cada subida.
  • La operación de composición comprueba automáticamente que los objetos de origen se hayan ensamblado correctamente e ignora cualquier valor CRC32C que proporciones como parte de la solicitud de composición. En la respuesta se devuelve un CRC32C del objeto compuesto resultante.
  • Si tu aplicación puede cambiar los objetos de origen entre el momento de la subida y el de la composición de esos objetos, debes especificar nombres específicos de la generación para los objetos de origen con el fin de evitar las condiciones de carrera. También puede generar un valor CRC32C a partir de los valores CRC32C de los objetos de origen previstos y compararlo con el valor CRC32C devuelto por la operación de composición.
  • En el momento de la descarga, debe calcular el CRC32C del objeto descargado y compararlo con el valor incluido en la respuesta.

Añadir y editar (limitado)

Puedes usar la operación de composición para realizar anexiones y ediciones limitadas de objetos.

Para añadir datos, sube datos a un objeto temporal nuevo, combina el objeto al que quieras añadir datos con este objeto temporal, asigna al resultado de la operación de combinación el mismo nombre que el objeto original (opcional) y elimina el objeto temporal.

Por ejemplo, en gcloud CLI, la serie de comandos para añadir la cadena new data a un objeto de Cloud Storage 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 admitir una variante básica de la edición de objetos. Por ejemplo, puedes componer un objeto X a partir de la secuencia {Y1, Y2, Y3}, sustituir el contenido de Y2 y volver a componer X a partir de esos mismos componentes. Ten en cuenta que, para ello, Y1, Y2 y Y3 no deben eliminarse, por lo que se te cobrarán esos componentes, así como el compuesto.

Siguientes pasos