Período de vida (TTL) en Azure Cosmos DB

SE APLICA A: NoSQL

Mediante el Período de vida o TTL, Azure Cosmos DB elimina automáticamente elementos de un contenedor después de un determinado período de tiempo. De forma predeterminada, puede establecer el período de vida en el nivel de contenedor e invalidar el valor en cada elemento. Después de establecer el TTL en el nivel de contenedor o de elemento, Azure Cosmos DB eliminará automáticamente estos elementos cuando haya pasado el período de tiempo seleccionado tras la hora de la última modificación. El valor del período de vida se configura en segundos. Cuando se configura el TTL, el sistema elimina automáticamente los elementos expirados en función del valor de TTL, sin necesidad de una operación de eliminación que se emita explícitamente desde la aplicación cliente. El valor máximo de TTL es de 2 147 483 647 segundos, el equivalente aproximado de 24 855 días o 68 años.

La eliminación de los elementos expirados es una tarea en segundo plano que usa las Unidades de solicitud restantes, es decir, las unidades de solicitud que no han consumido las solicitudes del usuario. Incluso después de que expire el período de vida, si el contenedor está sobrecargado con solicitudes y no hay suficientes RU disponibles, se retrasa la eliminación de los datos. Los datos se eliminan cuando hay suficientes RU disponibles para realizar la operación de eliminación. Aunque se retrase la eliminación de los datos, las consultas (por parte de cualquier API) no devuelven los datos después de que expire el TTL.

Nota:

Este contenido está relacionado con el TTL del almacén transaccional de Azure Cosmos DB. Si está buscando el TTL del almacén de análisis, que habilita escenarios de NoETL HTAP mediante Azure Synapse Link, haga clic aquí.

Período de vida para contenedores y elementos

El valor de período de vida se establece en segundos, y se interpreta como una delta desde el momento en que se modificó por última vez un elemento. Puede establecer el período de vida en un contenedor o en un elemento dentro del contenedor:

  1. Período de vida en un contenedor (se establece mediante DefaultTimeToLive):

    • Si no existe (o está establecido en NULL), los elementos no expiran automáticamente.

    • Si existe y el valor se ha establecido en "-1", es igual a infinito y los elementos no expiran de manera predeterminada.

    • Si está presente y el valor se establece en algún número distinto de cero número "n" – los elementos expirarán en "n" segundos después de su última hora de modificación.

  2. Período de vida en un elemento (se establece mediante ttl):

    • Esta propiedad es aplicable solo si está presente el valor DefaultTimeToLive y no está establecido en NULL para el contenedor primario.

    • Si está presente, invalida el valor de DefaultTimeToLive del contenedor primario.

Configuraciones de período de vida

  • Si el TTL se establece en "n" en un contenedor, los elementos de ese contenedor expirarán después de n segundos. Si hay elementos en el mismo contenedor que tienen su propio período de vida, establézcalo en -1 (lo que indica que no expiran). Si algunos elementos invalidan el período de vida con un número diferente, estos elementos expiran en función de su propio valor de TTL configurado.

  • Si no se establece el TTL en un contenedor, el período de vida en un elemento de este contenedor no tiene ningún efecto.

  • Si el TTL en un contenedor se establece en -1, un elemento de este contenedor que tenga el período de vida establecido en n, expirará después de n segundos, y los elementos restantes no expirarán.

Ejemplos

En esta sección se muestra algunos ejemplos con distintos valores de período de vida asignados a los contenedores y los elementos:

Nota:

No se admite establecer TTL en NULL en un elemento. El valor TTL del elemento debe ser un entero distinto de cero positivo menor o igual que 2147483647, o -1, lo que significa que el elemento nunca expirará. Para usar el TTL predeterminado en un elemento, asegúrese de que la propiedad TTL no está presente.

Ejemplo 1

TTL de contenedor se establece en null (DefaultTimeToLive = null)

TTL de elemento Resultado
falta la propiedad ttl TTL se deshabilita. El elemento nunca expirará (valor predeterminado).
TTL = -1 TTL se deshabilita. El elemento nunca expirará.
TTL = 2000 TTL se deshabilita. El elemento nunca expirará.

Ejemplo 2

TTL de contenedor se establece en -1 (DefaultTimeToLive = -1)

TTL de elemento Resultado
falta la propiedad ttl TTL está habilitado. El elemento nunca expirará (valor predeterminado).
TTL = -1 TTL está habilitado. El elemento nunca expirará.
TTL = 2000 TTL está habilitado. El elemento expirará transcurridos 2000 segundos.

Ejemplo 3

TTL de contenedor se establece en -1000 (DefaultTimeToLive = -1000)

TTL de elemento Resultado
falta la propiedad ttl TTL está habilitado. El elemento expirará transcurridos 1000 segundos (valor predeterminado).
TTL = -1 TTL está habilitado. El elemento nunca expirará.
TTL = 2000 TTL está habilitado. El elemento expirará transcurridos 2000 segundos.

Pasos siguientes

Aprenda a configurar el período de vida con los siguientes artículos: