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:
- Ter a mesma classe de armazenamento.
- Serem armazenados no mesmo contentor do Cloud Storage.
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?
- Componha um objeto.
- Saiba mais sobre os carregamentos compostos em paralelo.
- Saiba mais sobre os carregamentos multipartes, uma forma alternativa de carregar objetos em vários fragmentos para utilizadores da API XML.