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.
Não há garantia de que as solicitações em lote sejam atômicas. Embora operações únicas em uma solicitação em lote possam ser atômicas, não é possível garantir que todas as operações em um lote sejam atômicas como um grupo, porque algumas operações podem ter sucesso enquanto outras falham.
Em algumas situações, você pode acabar recuperando uma versão mais antiga de um objeto, como quando os dados armazenados em cache ficam desatualizados ou quando você realiza leituras de intervalo sem especificar um número de geração, em que o objeto que você pretende buscar é substituído. Como prática recomendada, use condições prévias para garantir que você esteja recuperando a versão correta do objeto.
A seguir
- Saiba como usar condições predefinidas para evitar disputas.
- Saiba mais sobre o armazenamento em cache no Cloud Storage.
- Saiba mais sobre as diretrizes de distribuição de acesso e taxa de solicitação.