Coerenza di Cloud Storage

Questa pagina spiega quali operazioni di Cloud Storage sono a elevata coerenza e quali sono a coerenza finale. Nel caso di oggetti memorizzabili nella cache e leggibili pubblicamente, controlli il grado di coerenza delle operazioni sugli oggetti.

Operazioni con coerenza elevata

Cloud Storage offre una coerenza globale elevata per le seguenti operazioni:

  • Elenco dei bucket
  • Bucket read-after-create
  • Bucket read-after-metadata-update
  • Read-after-delete del bucket
  • Read-after-write degli oggetti
  • Read-after-metadata-update dell'oggetto
  • Read-after-delete degli oggetti
  • Elenco degli oggetti

Quando scrivi un oggetto in Cloud Storage, ad esempio quando lo carichi, lo componi o lo copi, l'oggetto è immediatamente disponibile per la lettura e le operazioni sui metadati non appena ricevi una risposta di operazione riuscita alla tua richiesta di scrittura. Questo vale per tutti i bucket e per tutte le classi di archiviazione e si applica sia alla creazione di nuovi oggetti sia alla sostituzione di oggetti esistenti. Cloud Storage offre anche coerenza di lettura dopo la creazione, lettura dopo l'aggiornamento dei metadati, lettura dopo l'eliminazione ed elenco per risorse come cartelle e cartelle gestite.

Poiché le scritture sono a coerenza elevata, non riceverai mai una risposta 404 Not Found o dati inattivi per un'operazione read-after-write o read-after-metadata-update di un oggetto, anche per i bucket che si trovano in due o più regioni. Nel raro caso in cui i dati non siano ancora stati replicati tra regioni, ma la posizione in cui è stato scritto per la prima volta l'oggetto non sia più disponibile, i tentativi di accesso all'oggetto restituiscono una risposta di errore riprovabile 500.

La coerenza globale elevata si estende anche alle operazioni di eliminazione degli oggetti. Se una richiesta di eliminazione ha esito positivo, un tentativo immediato di scaricare l'oggetto o i relativi metadati genera un codice di stato 404 Not Found. Viene restituito l'errore 404 perché l'oggetto non esiste più dopo la riuscita dell'operazione di eliminazione.

L'elenco dei bucket e l'elenco degli oggetti sono a elevata coerenza: quando crei un bucket o un oggetto ed esegui immediatamente l'operazione list pertinente, il bucket o l'oggetto appena creato viene visualizzato nell'elenco restituito.

Per i bucket, mentre gli aggiornamenti dei metadati sono a coerenza elevata per le operazioni read-after-metadata-update, la propagazione delle modifiche alla configurazione risultanti potrebbe richiedere tempo. Ad esempio, se abiliti il controllo delle versioni degli oggetti in un bucket, devi attendere almeno 30 secondi prima di eliminare o sostituire gli oggetti.

Allo stesso modo, per le chiavi HMAC, c'è un ritardo massimo di 3 minuti tra il momento in cui richiedi di modificare lo stato della chiave e il momento in cui la modifica dello stato ha effetto. Ad esempio, se disattivi una chiave HMAC, devi attendere almeno 3 minuti prima di inviare una richiesta di eliminazione della chiave, perché i tentativi di farlo nei primi 3 minuti potrebbero non andare a buon fine.

Operazioni a coerenza finale

Le seguenti operazioni sono a coerenza finale:

  • Concessione o revoca dell'accesso alle risorse.
  • Ricreazione dei bucket dopo l'eliminazione.

In genere, l'applicazione di queste operazioni richiede circa un minuto. In alcuni casi, l'operazione potrebbe richiedere diversi minuti in più.

Come esempio di comportamento che può derivare dalla coerenza finale, se rimuovi l'accesso di un utente a un bucket, questa modifica viene immediatamente riflessa nei metadati del bucket; tuttavia, l'utente potrebbe comunque avere accesso al bucket per un breve periodo di tempo.

I bucket ricreati dopo l'eliminazione potrebbero richiedere diversi minuti prima di diventare accessibili.

Controllo e coerenza della cache

Gli oggetti memorizzati nella cache e leggibili pubblicamente potrebbero non mostrare una elevata coerenza. Se consenti la memorizzazione nella cache di un oggetto e l'oggetto si trova nella cache quando viene aggiornato o eliminato, l'oggetto memorizzato nella cache non viene aggiornato o eliminato finché non scade la durata della cache.

La durata della cache di un oggetto è definita dai metadati Cache-Control associati all'oggetto. I metadati Cache-Control possono essere impostati utilizzando un'intestazione della richiesta Cache-Control inclusa nel caricamento iniziale dell'oggetto o in un successivo aggiornamento dei metadati dell'oggetto. Poiché controlli i metadati Cache-Control, controlli anche il grado di coerenza degli oggetti memorizzati nella cache. Inoltre, mentre le richieste per l'oggetto possono includere la propria intestazione Cache-Control, queste intestazioni vengono ignorate da Cloud Storage se sono impostate per evitare i contenuti memorizzati nella cache.

Operazioni atomiche

Cloud Storage fornisce garanzie di atomicità per la maggior parte delle operazioni che coinvolgono singoli oggetti, come il caricamento di un oggetto, l'aggiornamento dei metadati di un oggetto, la sovrascrittura di un oggetto e l'eliminazione di un oggetto.

Le richieste batch, che aggregano singole operazioni in un'unica richiesta, non sono atomiche, perché è possibile che alcune delle operazioni contenute nel batch non vadano a buon fine, mentre altre sì.

La memorizzazione nella cache può causare la ricezione di versioni obsolete di un oggetto e, se esegui letture con intervallo senza specificare un numero di generazione, i tuoi dati potrebbero danneggiarsi se l'oggetto viene sovrascritto tra letture con intervallo successive. Come best practice, utilizza le precondizioni per assicurarti di recuperare la versione corretta dell'oggetto.

Passaggi successivi