Consistência

Nesta página, você conhecerá quais operações do Cloud Storage têm consistência forte e quais têm consistência posterior. No caso de objetos armazenáveis em cache e que estão publicamente disponíveis para leitura, você controla o grau de consistência das operações nos objetos.

Operações de consistência forte

O Cloud Storage fornece consistência forte global para as seguintes operações:

  • Leitura após gravação
  • Leitura após atualização de metadados
  • Leitura após exclusão
  • Listagem de buckets
  • Listagem de objetos

Quando você grava um objeto no Cloud Storage, por exemplo, ao fazer upload, compor ou copiar um objeto, ele fica imediatamente disponível para operações de leitura e metadados assim que você recebe uma resposta de êxito. Isso é verdadeiro para todos os buckets e para todas as classes de armazenamento, e isso se aplica à criação de novos objetos e à substituição de objetos existentes.

Como as gravações têm consistência forte, você nunca recebe uma resposta 404 Not Found ou dados desatualizados para uma ação de leitura após gravação ou leitura após atualização de metadados mesmo no caso de buckets em regiões birregionais ou multirregionais. No raro evento em que os dados ainda não foram replicados entre regiões, mas o local em que o objeto foi gravado pela primeira vez fica indisponível, as tentativas para acessar o objeto, retorne uma resposta de erro 500 que permite uma nova tentativa.

A alta consistência global também se estende às operações de exclusão em objetos. Se uma solicitação de exclusão for bem-sucedida, uma tentativa imediata de fazer o download do objeto ou dos metadados dele resultará em um código de status 404 Not Found. Você receberá o erro 404 porque o objeto não existe mais depois que a operação de exclusão é bem-sucedida.

A listagem de buckets e a listagem de objetos são altamente consistentes: quando você cria um bucket ou objeto e executa imediatamente a operação list relevante, o bucket ou objeto recém-criado aparecerá na lista retornada.

No caso dos buckets, embora as atualizações de metadados tenham consistência forte nas operações de leitura após atualização de metadados, as alterações de configuração resultantes podem levar algum tempo para serem propagadas. Por exemplo, se você ativar o controle de versão do objeto em um bucket, aguarde pelo menos 30 segundos antes de excluir ou substituir objetos.

Da mesma forma, para chaves HMAC, há um atraso de até três minutos entre quando você solicita a alteração do estado da chave e quando a alteração de estado entra em vigor. Por exemplo, se você desativar uma chave HMAC, espere pelo menos três minutos antes de fazer uma solicitação para excluir a chave, já que isso pode causar falhas nos primeiros três minutos.

Operações de consistência eventual

As operações a seguir têm consistência eventual:

  • Conceder ou revogar o acesso a recursos.

Normalmente, essas operações produzem efeito em cerca de um minuto. Em alguns casos, pode levar muitos minutos.

Como exemplo de comportamento resultante da consistência posterior, se você remover o acesso de um usuário a um bucket, essa alteração será refletida imediatamente nos metadados do bucket. No entanto, o usuário ainda pode ter acesso a ele por um curto período.

Controle de cache e consistência

Os objetos armazenados em cache que estão disponíveis publicamente para leitura talvez não apresentem consistência forte. Se você permitir que um objeto seja armazenado em cache e ele estiver no cache quando for atualizado ou excluído, esse objeto não será atualizado ou excluído até que a vida útil do cache expire.

A vida útil do cache de um objeto é definida pelos metadados Cache-Control associados ao objeto. É possível definir os metadados Cache-Control com um cabeçalho de solicitação Cache-Control incluído no upload inicial do objeto ou em uma atualização subsequente dos metadados. Como você controla os metadados Cache-Control, também controla o grau de consistência dos objetos armazenados em cache. Além disso, embora as solicitações para o objeto possam incluir um cabeçalho Cache-Control próprio, esses cabeçalhos são ignorados pelo Cloud Storage se estiverem definidos para evitar conteúdo em cache.

Operações atômicas

O Cloud Storage oferece garantias de atomicidade para a maioria das operações que envolvem objetos individuais, como upload, atualização dos metadados e exclusão de um objeto. As operações que envolvem vários objetos de uma só vez, como copiar ou renomear vários objetos, não são atômicas.

A seguir