Objetos compostos

Criar

Esta página descreve objetos compostos que você cria a partir de objetos existentes sem transferir dados de objetos adicionais. Objetos compostos são úteis para criar anexos em um objeto atual, bem como recriar objetos que você fez o upload como vários componentes em paralelo.

Operação de composição

A operação de composição concatena os dados em uma determinada sequência de objetos de origem para criar um novo objeto chamado objeto composto. Todos os objetos de origem precisam:

Ao executar uma composição:

  • Os objetos de origem não são afetados.
  • É possível usar entre 1 e 32 objetos de origem.
  • Os próprios objetos de origem podem ser objetos compostos.

Objeto composto que resulta de uma composição:

  • tem a mesma classe de armazenamento que os objetos de origem;
  • não muda se os objetos de origem são substituídos ou excluídos posteriormente.

Ao usar a gcloud storage para realizar a composição do objeto, o objeto resultante tem um Content-Type definido para corresponder ao Content-Type do primeiro objeto de origem.

Metadados do objeto composto

Há várias diferenças entre os metadados de um objeto composto e aqueles de outros objetos:

  • Os objetos compostos não têm um campo de metadados de hash MD5.

  • O valor ETag de um objeto composto não é baseado em um hash MD5, e o código cliente não deve fazer suposições sobre ETags de objetos compostos, exceto que eles mudam sempre que o objeto subjacente é alterado pela especificação IETF para HTTP/1.1.

  • Cada objeto composto tem um campo de metadados de contagem de componentes, que conta o número de objetos não compostos contidos nele.

    • Se você reescrever um objeto composto para um local ou classe de armazenamento diferente, o resultado será um objeto composto com uma contagem de componentes igual a 1.

Como fazer verificação de integridade de objetos compostos

O Cloud Storage usa o CRC32C para verificar a integridade de cada objeto de origem no momento do upload e para permitir que o autor da chamada execute uma verificação de integridade do objeto composto resultante quando o download dele é feito. O CRC32C é um código de detecção de erros que pode ser calculado com eficiência a partir dos valores CRC32C dos componentes dele. O aplicativo usará o CRC32C da maneira a seguir:

  • Ao fazer upload de objetos de origem, calcule o CRC32C de cada objeto usando uma biblioteca de CRC32C, como uma das listadas na página de hashes e ETags, e inclua esse valor na solicitação. Com base nos valores inseridos, o Cloud Storage valida cada upload.
  • A operação de composição verifica automaticamente se os objetos de origem estão montados corretamente e ignora todos os valores CRC32C fornecidos como parte da solicitação de composição. Uma CRC32C do objeto composto resultante é retornada na resposta.
  • Se o aplicativo puder alterar objetos de origem entre o momento de fazer o upload e compor esses objetos, defina nomes específicos de geração para os objetos de origem para evitar disputas. Como alternativa, é possível criar um valor CRC32C com base nos valores CRC32C dos objetos de origem pretendidos e compará-lo ao valor CRC32C retornado pela operação de composição.
  • No momento do download, calcule o CRC32C do objeto baixado e o compare com o valor incluído na resposta.

Anexação e edição limitadas

É possível usar a operação de escrita para executar edições e anexos limitados de objetos.

Você anexa fazendo upload de dados para um objeto temporário novo, compondo o objeto que quer anexar com esse objeto temporário, nomeando opcionalmente a saída da operação de composição igual ao objeto original e excluindo o objeto temporário.

Por exemplo, na CLI gcloud, a série de comandos para anexar a string new data a um objeto atual do Cloud Storage é a seguinte:

$ 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

Você também pode usar composição para dar suporte a uma versão básica de edição de objetos. Por exemplo, é possível compor um objeto X com a sequência {Y1, Y2, Y3}, substituir o conteúdo de Y2 e recompor X a partir desses mesmos componentes. Isso exige que Y1, Y2 e Y3 não sejam excluídos, por isso você será cobrado por esses componentes e pelo objeto composto como um todo.

A seguir