En esta página, se explica qué operaciones de Cloud Storage tienen coherencia sólida y cuáles tienen coherencia eventual. En el caso de objetos de lectura pública y almacenables en caché, puedes controlar el grado en el que las operaciones en los objetos son coherentes.
Operaciones con coherencia sólida
Cloud Storage proporciona coherencia sólida global para las siguientes operaciones:
- Read-after-write
- Read-after-metadata-update
- Read-after-delete
- Lista de buckets
- Lista de objetos
Cuando escribes un objeto en Cloud Storage, por ejemplo, cuando subes, redactas o copias un objeto, este está disponible de inmediato para operaciones de lectura y metadatos en cuanto recibes una respuesta exitosa a tu escritura. Esto se aplica a todos los buckets y a todas las clases de almacenamiento, y esto se aplica a la creación de objetos nuevos y al reemplazo de los objetos existentes.
Debido a que las escrituras tienen coherencia sólida, nunca recibes una respuesta 404 Not Found
o datos inactivos para una operación de lectura luego de escritura o lectura luego de actualización de metadatos, incluso para los buckets ubicados en dual regiones o multirregiones. En el caso poco frecuente de que tus datos aún no se hayan replicado en todas las regiones, pero la ubicación en la que se escribió por primera vez tu objeto deje de estar disponible, los intentos de acceder a él mostrarán un respuesta de error 500
reintentable.
La coherencia sólida global se extiende también a las operaciones de eliminación en objetos. Si la solicitud de una eliminación es exitosa, el intento inmediato de descarga de un objeto o sus metadatos será un código de estado 404 Not Found
. El error 404
ocurre debido a que el objeto ya no existe después de que la operación de eliminación es exitosa.
Las enumeraciones de depósitos y de objetos tienen coherencia sólida: cuando creas un depósito o un objeto y realizas de inmediato la operación list
relevante, el objeto o depósito recién creado aparece en la lista que se muestra.
En los depósitos, las actualizaciones de metadatos tienen coherencia sólida para las operaciones de lectura y, luego, actualización de metadatos, y los cambios resultantes de la configuración pueden tardar en propagarse. Por ejemplo, si habilitas el control de versiones de objetos en un depósito, debes esperar al menos 30 segundos antes de borrar o reemplazar objetos.
De manera similar, para las claves HMAC hay una demora de hasta 3 minutos entre el momento en que solicitas cambiar el estado de la clave y el momento en que el cambio de estado surte efecto. Por ejemplo, si inhabilitas una clave HMAC, debes esperar al menos 3 minutos antes de realizar una solicitud para borrar la clave, ya que los intentos en los primeros 3 minutos podrían fallar.
Operaciones con coherencia eventual
Las operaciones siguientes tienen coherencia eventual:
- Otorgar o revocar el acceso a los recursos
En general, estas operaciones tardan alrededor de un minuto en aplicarse. En algunos casos, puede llevar varios minutos más.
Como ejemplo de comportamiento que puede surgir en la coherencia eventual, si le quitas el acceso a un bucket a un usuario, este cambio se reflejará de inmediato en los metadatos del bucket ; sin embargo, el usuario aún puede tener acceso al bucket por un período corto.
Coherencia y control de caché
Es posible que los objetos almacenados en caché que son de lectura pública no muestren coherencia sólida. Si permites que un objeto se almacene en caché y el objeto está en caché cuando se actualiza o se borra, ese objeto no se actualiza o se borra hasta que no caduca la vida útil de su caché.
La vida útil de la caché de un objeto se define por los metadatos Cache-Control
asociados con el objeto. Los metadatos Cache-Control
se pueden configurar con un encabezado de solicitud Cache-Control
incluido en la carga inicial del objeto o en la actualización posterior de los metadatos del objeto. Debido a que controlas los metadatos Cache-Control
, también controlas el grado de coherencia de los objetos almacenados en caché. Además, si las solicitudes para un objeto incluyen su propio encabezado Cache-Control
, Cloud Storage ignora estos encabezados si están configurados para evitar el contenido en caché.
Operaciones atómicas
Cloud Storage proporciona garantías de atomicidad para la mayoría de las operaciones que implican objetos individuales, como subir un objeto (incluida la sustitución de un objeto existente), actualizar los metadatos de un objeto, reemplazar un objeto y borrar un objeto.
No se garantiza que las solicitudes por lotes sean atómicas. Si bien las operaciones individuales dentro de una solicitud por lotes pueden ser atómicas, no se puede garantizar que todas las operaciones dentro de la solicitud por lotes sean atómicas como grupo, ya que es posible que algunas de las operaciones se realicen correctamente mientras que otras fallan.
En algunas situaciones, es posible que recuperes una versión anterior de un objeto, como cuando los datos almacenados en caché se vuelven inactivos o cuando realizas lecturas de rango sin especificar un número de generación, en el que se reemplaza el objeto que deseas recuperar. Como práctica recomendada, usa condiciones previas para asegurarte de recuperar la versión correcta del objeto.
¿Qué sigue?
- Obtén información sobre el uso de las condiciones previas para evitar las condiciones de carrera.
- Obtén más información sobre el almacenamiento en caché en Cloud Storage.
- Obtén más información sobre los lineamientos de distribución de acceso y porcentaje de solicitudes.