Consistencia de Cloud Storage

En esta página se explica qué operaciones de Cloud Storage tienen una coherencia fuerte y cuáles tienen una coherencia eventual. En el caso de los objetos almacenables en caché y legibles públicamente, usted controla el grado de coherencia de las operaciones en los objetos.

Operaciones con coherencia fuerte

Cloud Storage ofrece una coherencia global sólida en las siguientes operaciones:

  • Lista de segmentos
  • Lectura de un segmento después de crearlo
  • Lectura de un segmento después de actualizar los metadatos
  • Lectura después de eliminar un segmento
  • Lectura después de escritura de objetos
  • Lectura de objetos después de actualizar los metadatos
  • Lectura de objeto después de eliminarlo
  • Lista de objetos

Cuando escribes un objeto en Cloud Storage (por ejemplo, cuando subes, compones o copias un objeto), este está disponible inmediatamente para las operaciones de lectura y metadatos en cuanto recibes una respuesta correcta a tu solicitud de escritura. Esto se aplica a todos los contenedores y a todas las clases de almacenamiento, así como a la creación de objetos y a la sustitución de objetos. Cloud Storage también ofrece coherencia de lectura después de la creación, de la actualización de metadatos, de la eliminación y de la creación de listas para recursos como carpetas y carpetas gestionadas.

Como las escrituras son coherentes, nunca recibirás una respuesta 404 Not Found o datos obsoletos para una operación de lectura después de escritura o de lectura después de actualización de metadatos de un objeto, incluso en el caso de los segmentos ubicados en regiones duales o multirregionales. En el caso poco probable de que tus datos aún no se hayan replicado en las regiones, pero la ubicación en la que se escribió tu objeto por primera vez no esté disponible, los intentos de acceder al objeto devolverán una respuesta de error 500 reintentable.

La alta coherencia global también se aplica a las operaciones de eliminación de objetos. Si una solicitud de eliminación se realiza correctamente, al intentar descargar el objeto o sus metadatos inmediatamente, se devuelve el código de estado 404 Not Found. Recibes el error 404 porque el objeto ya no existe después de que se haya completado la operación de eliminación.

Las listas de segmentos y de objetos son coherentes: cuando creas un segmento o un objeto y, a continuación, realizas inmediatamente la operación list correspondiente, el segmento o el objeto recién creado aparece en la lista devuelta.

En el caso de los contenedores, aunque las actualizaciones de metadatos son fuertemente coherentes para las operaciones de lectura después de la actualización de metadatos, los cambios de configuración resultantes pueden tardar en propagarse. Por ejemplo, si habilitas el control de versiones de objetos en un contenedor, debes esperar al menos 30 segundos antes de eliminar o sustituir objetos.

Del mismo modo, en el caso de las claves HMAC, hay un retraso de hasta 3 minutos entre el momento en que solicitas cambiar el estado de la clave y el momento en que se aplica el cambio de estado. Por ejemplo, si inhabilitas una clave HMAC, debes esperar al menos 3 minutos antes de enviar una solicitud para eliminarla, ya que los intentos de hacerlo en los primeros 3 minutos podrían fallar.

Operaciones con coherencia final

Las siguientes operaciones son coherentes con el tiempo:

  • Conceder o revocar el acceso a los recursos.
  • Volver a crear segmentos después de eliminarlos.

Normalmente, estas operaciones tardan aproximadamente un minuto en aplicarse. En algunos casos, puede tardar varios minutos más.

Por ejemplo, si quitas el acceso de un usuario a un segmento, este cambio se reflejará inmediatamente en los metadatos del segmento. Sin embargo, es posible que el usuario siga teniendo acceso al segmento durante un breve periodo.

Los contenedores que se vuelven a crear después de eliminarse pueden tardar varios minutos en estar accesibles.

Control y coherencia de la caché

Es posible que los objetos almacenados en caché que se puedan leer públicamente no muestren una coherencia sólida. Si permites que un objeto se almacene en caché y el objeto está en la caché cuando se actualiza o se elimina, el objeto almacenado en caché no se actualiza ni se elimina hasta que caduca su tiempo de vida en la caché.

La duración de la caché de un objeto se define mediante los Cache-Controlmetadatos asociados al objeto. Los metadatos Cache-Control se pueden definir mediante un encabezado de solicitud Cache-Control incluido en la subida inicial del objeto o en una actualización posterior de los metadatos del objeto. Como controlas los Cache-Control metadatos, también controlas el grado de coherencia de los objetos almacenados en caché. Además, aunque las solicitudes del objeto pueden incluir su propio encabezado Cache-Control, Cloud Storage ignora estos encabezados si se configuran para evitar el contenido almacenado en caché.

Operaciones atómicas

Cloud Storage ofrece garantías de atomicidad para la mayoría de las operaciones que implican objetos individuales, como subir un objeto, actualizar los metadatos de un objeto, sobrescribir un objeto y eliminar un objeto.

Las solicitudes por lotes, que agregan operaciones individuales en una sola solicitud, no son atómicas, ya que es posible que algunas de las operaciones incluidas en el lote fallen mientras que otras se completen correctamente.

El almacenamiento en caché puede provocar que recibas versiones obsoletas de un objeto. Además, si realizas lecturas por intervalos sin especificar un número de generación, tus datos pueden dañarse si el objeto se sobrescribe entre lecturas por intervalos sucesivas. Te recomendamos que uses condiciones previas para asegurarte de que obtienes la versión correcta del objeto.

Siguientes pasos