Questa pagina descrive le operazioni di Cloud Storage a coerenza elevata e a coerenza finale. Il comportamento di coerenza determina quando le modifiche a oggetti, bucket e autorizzazioni di accesso diventano effettive. Per gli oggetti memorizzabili nella cache e leggibili pubblicamente, controlli la coerenza delle operazioni.
Operazioni a 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 dell'oggetto
- Read-after-metadata-update dell'oggetto
- Read-after-delete dell'oggetto
- Elenco degli oggetti
Quando scrivi un oggetto in Cloud Storage, ad esempio quando carichi, componi o copi un oggetto, 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 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 ed elenco per risorse come cartelle e cartelle gestite.
Poiché le scritture sono a coerenza elevata, non riceverai mai una 404 Not Found
risposta o dati inattivi per un'operazione read-after-write o object
read-after-metadata-update dell'oggetto, nemmeno per i bucket che si trovano in
regioni doppie o multiregionali. Nella rara eventualità in cui i dati non siano
ancora stati replicati tra le regioni, ma la località in cui l'oggetto
è stato scritto per la prima volta non è più disponibile, i tentativi di accedere 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 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 coerenza elevata: 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, anche se gli aggiornamenti dei metadati sono a coerenza elevata per le operazioni read-after-metadata-update, la propagazione delle modifiche alla configurazione risultanti potrebbe richiedere del 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, si verifica 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 disabiliti 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 riuscire.
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, queste operazioni diventano effettive in circa un minuto. In alcuni casi, potrebbero essere necessari diversi minuti in più.
Ad esempio, come esempio di comportamento che può derivare dalla coerenza finale, se rimuovi l'accesso di un utente a un bucket, questa modifica viene immediatamente riportata 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 cache e coerenza
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 Cache-Control metadati
associati all'oggetto. I metadati Cache-Control possono essere impostati utilizzando un'
Cache-Control intestazione della richiesta 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, anche se le richieste dell'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. Ad esempio, se il caricamento di un oggetto viene interrotto a causa di un errore di rete, non vengono caricati dati parziali nel bucket. L'oggetto diventa visibile nel bucket solo dopo che l'intero caricamento è stato completato correttamente e il server ha inviato una risposta di operazione riuscita.
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 inattive di un oggetto e, se esegui letture a intervalli senza specificare un numero di generazione, i dati potrebbero danneggiarsi se l'oggetto viene sovrascritto tra letture a intervalli 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.