Amazon S3 adiciona funcionalidade Put-If-Match (Compare-and-Swap)
(aws.amazon.com)-
Novo recurso do Amazon S3: gravações condicionais
-
O Amazon S3 agora pode realizar gravações condicionais que atualizam um objeto após verificar se ele não foi modificado. Isso ajuda a coordenar gravações simultâneas no mesmo objeto e evita que vários autores concorrentes sobrescrevam acidentalmente o conteúdo sem saber do estado atual do objeto.
-
Esse recurso pode ser usado tanto em buckets de uso geral quanto em buckets de diretório do S3, fornecendo o ETag do objeto por meio das requisições de API
S3 PutObjectouCompleteMultipartUpload. -
As gravações condicionais simplificam a forma como aplicações distribuídas atualizam conjuntos de dados compartilhados simultaneamente. Assim como o uso do cabeçalho condicional HTTP
if-none-matchpara verificar se um objeto já existe antes de ser criado, agora os clientes podem realizar a verificação de gravação condicional especificando o ETag do objeto por meio do cabeçalho HTTPif-matchna requisição de API. -
O S3 confirma a gravação depois de verificar se o ETag do objeto corresponde ao valor fornecido na requisição de API, impedindo que o cliente sobrescreva o objeto até que a condição seja atendida.
-
Esse novo cabeçalho condicional pode ajudar a melhorar a eficiência de análises em grande escala, machine learning distribuído e outros trabalhos altamente paralelizados.
-
Esse novo recurso de gravação condicional está disponível em todas as regiões da AWS sem custo adicional. É possível realizar gravações condicionais usando AWS SDK, API ou CLI. Para mais detalhes sobre gravações condicionais, consulte o guia do usuário do S3.
-
1 comentários
Comentários do Hacker News
Foi adicionada ao Amazon S3 uma funcionalidade que permite impor operações de escrita condicionais
A Turbopuffer.com vem usando isso em seu banco de dados para evitar dependências além do armazenamento de objetos
Com consistência forte, já haviam alcançado metade da funcionalidade desejada
Há quem tenha dificuldade em entender por que essa funcionalidade é importante
Isso está mais próximo de compare-and-set do que de compare-and-swap
Quando combinado com a garantia de consistência read-after-write, isso se torna uma base perfeita para construir, sobre armazenamento de objetos, um repositório incremental append-only
O Azure Blob Storage também oferece suporte a e-tag e controle otimista
Se o algoritmo ETag padrão da AWS for um simples hash MD5, surge a dúvida se colisões de MD5 podem causar falhas nos dados do objeto
O MinIO, implementação open source do Amazon S3, já oferece essa funcionalidade há quase 2 anos
Uma nova funcionalidade foi adicionada no verão em resposta ao recurso IfNoneMatch do s3fs