Objetos compostos

Criar

Esta página descreve os objetos compostos, que cria a partir de objetos existentes sem transferir dados de objetos adicionais. Os objetos compostos são úteis para adicionar dados a um objeto existente, bem como para recriar objetos que carregou como vários componentes em paralelo.

Operação de composição

A operação de composição concatena os dados numa determinada sequência de objetos de origem para criar um novo objeto denominado objeto composto. Todos os objetos de origem têm de:

Quando realiza uma composição:

  • Os objetos de origem não são afetados.
  • Pode usar entre 1 e 32 objetos de origem.
  • Os objetos de origem podem ser objetos compostos.

O objeto composto resultante de uma composição:

  • Tem a mesma classe de armazenamento que os objetos de origem.
  • Não se altera se os objetos de origem forem posteriormente substituídos ou eliminados.

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

Metadados de objetos compostos

Existem várias diferenças entre os metadados de um objeto composto e os metadados 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 se baseia numa hash MD5 e o código do cliente não deve fazer suposições sobre ETags de objetos compostos, exceto que mudam sempre que o objeto subjacente muda de acordo com a especificação IETF para HTTP/1.1.

  • Cada objeto composto tem um campo de metadados component count, que contabiliza o número de objetos não compostos contidos no objeto composto.

    • Se reescrever um objeto composto para uma localização ou uma classe de armazenamento diferente, o resultado é um objeto composto com uma contagem de componentes de 1.

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 carregamento e para permitir que o autor da chamada faça uma verificação de integridade do objeto composto resultante quando é transferido. O CRC32C é um código de deteção de erros que pode ser calculado de forma eficiente a partir dos valores CRC32C dos respetivos componentes. A sua aplicação deve usar o CRC32C da seguinte forma:

  • Quando carregar objetos de origem, deve calcular o CRC32C para cada objeto através de uma biblioteca CRC32C, como uma das indicadas na página de metadados de objetos, e incluir esse valor no seu pedido. Com base nos valores que fornece, o Cloud Storage valida cada carregamento.
  • A operação de composição verifica automaticamente se os objetos de origem estão corretamente montados e ignora qualquer valor CRC32C que fornecer como parte do pedido de composição. É devolvido um CRC32C do objeto composto resultante na resposta.
  • Se a sua aplicação puder alterar objetos de origem entre o momento do carregamento e da composição desses objetos, deve especificar nomes específicos da geração para os objetos de origem para evitar condições de concorrência. Em alternativa, pode criar um valor CRC32C a partir dos valores CRC32C dos objetos de origem pretendidos e compará-lo com o valor CRC32C devolvido pela operação de composição.
  • No momento da transferência, deve calcular o CRC32C do objeto transferido e compará-lo com o valor incluído na resposta.

Anexar e editar limitados

Pode usar a operação compose para realizar edições e anexos de objetos limitados.

Pode anexar dados carregando-os para um novo objeto temporário, compondo o objeto que quer anexar com este objeto temporário, opcionalmente, dando ao resultado da operação de composição o mesmo nome do objeto original e eliminando o objeto temporário.

Por exemplo, na CLI gcloud, a série de comandos para anexar a string new data a um objeto do Cloud Storage existente é 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

Também pode usar a composição para suportar uma versão básica da edição de objetos. Por exemplo, pode compor um objeto X a partir da sequência {Y1, Y2, Y3}, substituir o conteúdo de Y2 e recompor X a partir desses mesmos componentes. Tenha em atenção que isto requer que Y1, Y2 e Y3 permaneçam sem eliminação, pelo que lhe será cobrado o valor desses componentes, bem como o do composto.

O que se segue?