Questa pagina descrive le operazioni di Cloud Storage con elevata coerenza e coerenza finale. Il comportamento di coerenza determina quando diventano effettive le modifiche a oggetti, bucket e autorizzazioni di accesso. Per gli oggetti memorizzabili nella cache e leggibili pubblicamente, controlli la coerenza delle operazioni.
Operazioni con coerenza elevata
Cloud Storage offre un'elevata coerenza globale per le seguenti operazioni:
- Elenco dei bucket
- Read-after-create del bucket
- Read-after-metadata-update del bucket
- Read-after-delete del bucket
- Read-after-write degli oggetti
- Read-after-metadata-update degli oggetti
- 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 le operazioni di lettura e sui metadati non appena ricevi una risposta di operazione riuscita alla tua richiesta di scrittura. Questo comportamento è valido per tutti i bucket e le classi di archiviazione e il modello di coerenza si applica sia alla creazione di nuovi oggetti sia alla sostituzione di oggetti esistenti. Cloud Storage offre anche la coerenza read-after-create, read-after-metadata-update, read-after-delete e di elenco per risorse come cartelle e cartelle gestite.
Poiché le scritture sono ad elevata coerenza, 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, nemmeno per i bucket che si trovano in due o più regioni. Nel raro caso in cui i tuoi dati non siano ancora stati replicati tra regioni, ma la località in cui è stato scritto l'oggetto diventa non disponibile, i tentativi di accesso all'oggetto restituiscono una risposta di errore 500 con possibilità di nuovo tentativo.
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 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, sebbene gli aggiornamenti dei metadati siano ad elevata coerenza per le operazioni read-after-metadata-update, la propagazione delle modifiche di configurazione risultanti 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, esiste un ritardo fino a 3 minuti tra il momento in cui richiedi di modificare lo stato della chiave e il momento in cui la modifica dello stato diventa effettiva. Ad esempio, se disattivi una chiave HMAC, devi attendere almeno 3 minuti prima di effettuare una richiesta di eliminazione della chiave, perché i tentativi di farlo nei primi 3 minuti potrebbero non riuscire.
Operazioni con 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ù.
Un esempio di comportamento che può derivare dalla coerenza finale è la rimozione dell'accesso di un utente a un bucket: questa modifica si riflette immediatamente nei metadati del bucket, ma 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 che sono leggibili pubblicamente potrebbero non mostrare un'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 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 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, sebbene le richieste per l'oggetto possano 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. Ad esempio, se il caricamento di un oggetto viene interrotto a causa di un errore di rete, nel bucket non vengono caricati dati parziali. L'oggetto diventa visibile nel bucket solo dopo che l'intero caricamento è stato completato correttamente e il server ha inviato una risposta di esito positivo.
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ò comportare la ricezione di versioni obsolete di un oggetto e, se esegui letture intervallate senza specificare un numero di generazione, i dati potrebbero essere danneggiati se l'oggetto viene sovrascritto tra letture intervallate successive. Come best practice, utilizza le precondizioni per assicurarti di recuperare la versione corretta dell'oggetto.
Passaggi successivi
- Scopri come utilizzare le precondizioni per evitare le race condition.
- Scopri di più sulla memorizzazione nella cache in Cloud Storage.
- Scopri di più sulle linee guida per tasso di richieste e distribuzione degli accessi.