Objetos compostos

Acessar exemplos

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 cria um novo objeto composto com a concatenação de uma determinada sequência de objetos de origem. Todos os objetos de origem devem:

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.
  • O objeto composto resultante tem a mesma classe de armazenamento que os objetos de origem.
  • Em caso de subsequente substituição ou exclusão dos objetos de origem, o objeto composto resultante não será alterado.
  • Ao usar o gsutil para realizar a composição do objeto, o Content-Type do objeto composto resultante é 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 e/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 o upload de objetos de origem, calcule o CRC32C para cada objeto usando uma biblioteca de CRC32C, como uma das listadas abaixo, e inclua esse valor em sua solicitação.
  • Para a operação de composição, inclua um CRC32C na solicitação. O Cloud Storage responde com o CRC32C do objeto composto, que pode ser validado pela criação de um valor CRC32C dos valores CRC32C dos objetos de origem.
  • No momento do download, calcule o CRC32C do objeto baixado e o compare com o valor incluído na resposta.
  • Se seu 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.

As bibliotecas para calcular valores de CRC32C incluem Boost para C++, GoogleCloudPlatform crc32c para Java, crcmod para Python e digest-crc para Ruby. Observe também que o CRC32C é compatível com hardware nas CPUs da Intel atuais.

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 esses novos dados, nomeando opcionalmente a saída da operação de composição igual ao objeto original e excluindo o objeto temporário.

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