Coerenza

Questa pagina spiega quali operazioni di Cloud Storage sono a elevata coerenza e quali sono a coerenza finale. Nel caso di oggetti cacheabili e pubblicamente leggibili, puoi controllare il grado di coerenza delle operazioni sugli oggetti.

Operazioni con coerenza elevata

Cloud Storage offre un'elevata coerenza globale per le seguenti operazioni:

  • Read-after-write
  • Read-after-metadata-update
  • Read-after-delete
  • Elenco dei bucket
  • Elenco degli oggetti

Quando scrivi un oggetto in Cloud Storage, ad esempio quando lo carichi, lo scrivi 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.

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, anche per i bucket in regioni a 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 disponibile, i tentativi di accedere all'oggetto restituiscono una risposta di errore 500 possibile da ripetere.

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 darà come risultato 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 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, sebbene gli aggiornamenti dei metadati siano fortemente coerenti per le operazioni read-after-metadata-update, la propagazione delle modifiche alla configurazione risultante potrebbe richiedere del tempo. Ad esempio, se attivi il controllo delle versioni degli oggetti in un bucket, devi attendere almeno 30 secondi prima di eliminare o sostituire gli oggetti.

Analogamente, per le chiavi HMAC, è presente 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 viene applicata. 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:

  • Concedere l'accesso alle risorse o revocarlo.

In genere sono necessari circa un minuto per l'applicazione di queste operazioni. 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 applicata ai metadati del bucket. Tuttavia, l'utente potrebbe avere ancora accesso al bucket per un breve periodo di tempo.

Controllo della cache e coerenza

Gli oggetti memorizzati nella cache che sono pubblicamente leggibili potrebbero non mostrare elevata coerenza. Se consenti la memorizzazione nella cache di un oggetto e questo è nella cache quando viene aggiornato o eliminato, l'oggetto memorizzato nella cache non viene aggiornato o eliminato fino alla scadenza della 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 di richiesta Cache-Control inclusa nel caricamento iniziale dell'oggetto o in un successivo aggiornamento dei metadati dell'oggetto. Poiché controlla i metadati Cache-Control, puoi anche controllare il grado di coerenza degli oggetti memorizzati nella cache. Inoltre, anche se 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 (inclusa la sovrascrittura di un oggetto esistente), l'aggiornamento dei metadati di un oggetto, la sostituzione di un oggetto e l'eliminazione di un oggetto.

Non è garantito che le richieste batch siano atomiche. Sebbene le singole operazioni all'interno di una richiesta batch possano essere atomiche, non è possibile garantire che tutte le operazioni all'interno della richiesta batch siano atomiche come gruppo perché è possibile che alcune operazioni riescano mentre altre falliscano.

In alcuni casi, potresti finire per recuperare una versione precedente di un oggetto, ad esempio quando i dati memorizzati nella cache diventano obsoleti o quando esegui letture con intervallo senza specificare un numero di generazione, in cui l'oggetto che intendi recuperare viene sovrascritto. Come best practice, utilizza le precondizioni per assicurarti di recuperare la versione dell'oggetto corretta.

Passaggi successivi