Uma estratégia para carregar ficheiros grandes chama-se carregamentos compostos paralelos. Num carregamento deste tipo, um ficheiro é dividido em até 32 blocos, os blocos são carregados em paralelo para objetos temporários, o objeto final é recriado através dos objetos temporários e os objetos temporários são eliminados.
Os carregamentos compostos paralelos podem ser significativamente mais rápidos se a velocidade da rede e do disco não forem fatores limitativos. No entanto, o objeto final armazenado no seu contentor é um objeto composto, que só tem um hash crc32c e não um hash MD5. Como resultado, tem de usar o crcmod para fazer verificações de integridade quando transfere o objeto com aplicações Python. Só deve fazer carregamentos compostos paralelos se se aplicar o seguinte:
Não precisa que os objetos carregados tenham um hash MD5.
Qualquer utilizador do Python, incluindo utilizadores do gsutil, que precise de transferir os seus objetos tem o google-crc32c ou o crcmod instalado.
Por exemplo, se usar Python para carregar recursos de vídeo que só são publicados por uma aplicação Java, os carregamentos compostos paralelos são uma boa opção porque existem implementações CRC32C eficientes disponíveis em Java.
Como as ferramentas e as APIs usam carregamentos compostos paralelos
Consoante a forma como interage com o Cloud Storage, os carregamentos compostos paralelos podem ser geridos automaticamente em seu nome. Esta secção descreve o comportamento de carregamento composto paralelo para diferentes ferramentas e fornece informações sobre como pode modificar o comportamento.
Consola
A Trusted Cloud consola não faz carregamentos compostos em paralelo.
Linha de comandos
Pode configurar como e quando o gcloud storage cp
realiza carregamentos compostos
paralelos modificando as seguintes propriedades:
storage/parallel_composite_upload_enabled
: propriedade para ativar os carregamentos compostos paralelos. SeFalse
, desative os carregamentos compostos paralelos. SeTrue
ouNone
, faça carregamentos compostos paralelos para objetos que cumpram os critérios definidos nas outras propriedades. A predefinição éNone
.storage/parallel_composite_upload_compatibility_check
: propriedade para ativar/desativar verificações de segurança. SeTrue
,gcloud storage
só faz carregamentos compostos paralelos quando todas as seguintes condições forem cumpridas:- A classe de armazenamento do objeto carregado é
STANDARD
. - O contentor de destino não tem uma política de retenção.
- O contentor de destino não tem a opção retenções de objetos predefinidas ativada.
Tenha em atenção que, para verificar estas condições, a CLI gcloud obtém os metadados do contentor de destino como parte do comando de carregamento.
Se
False
,gcloud storage
não executa nenhuma verificação. A predefinição éTrue
.- A classe de armazenamento do objeto carregado é
storage/parallel_composite_upload_threshold
: o tamanho total mínimo do ficheiro para fazer um carregamento composto paralelo. A predefinição é de 150 MiB.storage/parallel_composite_upload_component_size
: o tamanho máximo de cada objeto temporário. A propriedade é ignorada se o tamanho total do ficheiro for tão grande que exija mais de 32 blocos deste tamanho.storage/parallel_composite_upload_component_prefix
: o prefixo usado ao atribuir nomes a objetos temporários. Esta propriedade pode ser definida como um caminho absoluto ou como um caminho relativo ao objeto final. Consulte a descrição da propriedade para mais informações. O prefixo predefinido é o caminho absoluto/gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details
.
Pode modificar estas propriedades criando uma configuração com nome e aplicando a configuração por comando através da --configuration
flag ao nível do projeto ou para todos os comandos da CLI gcloud através do comando gcloud config set
.
Não é necessário espaço adicional no disco local quando usa a CLI gcloud para fazer carregamentos compostos paralelos. Se um carregamento composto paralelo falhar antes da composição, execute novamente o comando da CLI gcloud para tirar partido dos carregamentos retomáveis para os objetos temporários que falharam. Todos os objetos temporários carregados com êxito antes da falha não são carregados novamente quando retoma o carregamento.
Os objetos temporários são denominados da seguinte forma:
TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID
Onde:
- O
TEMPORARY_PREFIX
é controlado pela propriedadestorage/parallel_composite_upload_component_prefix
. RANDOM_VALUE
é um valor numérico aleatório.HEX_DIGEST
é um hash derivado do nome do recurso de origem.COMPONENT_ID
é o número sequencial do componente.
Geralmente, os objetos temporários são eliminados no final de um carregamento composto paralelo, mas para evitar deixar objetos temporários, deve verificar o estado de saída do comando da CLI gcloud e eliminar manualmente todos os objetos temporários que foram carregados como parte de um carregamento anulado.
Bibliotecas cliente
Java
Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Pode fazer carregamentos compostos paralelos definindo AllowParallelCompositeUpload
como true
.
Por exemplo:
Node.js
Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
A biblioteca de cliente Node.js não suporta carregamentos compostos paralelos. Em alternativa, use os carregamentos multipartes da API XML.
Python
Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
A biblioteca cliente Python não suporta carregamentos compostos paralelos. Em alternativa, use os carregamentos multipartes da API XML.
APIs REST
Tanto a API JSON como a API XML suportam o carregamento de partes de objetos em paralelo e a sua recombinação num único objeto através da operação compose
.
Tenha em atenção o seguinte ao criar código para carregamentos compostos paralelos:
Quando usa a operação
compose
, os objetos de origem não são afetados pelo processo de composição.Isto significa que, se se destinarem a ser temporários, tem de os eliminar explicitamente assim que concluir a composição com êxito. Caso contrário, os objetos de origem permanecem no seu contentor e são faturados em conformidade.
Para se proteger contra alterações aos objetos de origem entre os pedidos de carregamento e de composição, deve fornecer um número de geração esperado para cada origem.