En esta página se describe cómo usar la consola de Google Cloud y la CLI de Google Cloud para configurar políticas de tiempo de vida (TTL). Antes de leer esta página, debes conocer el modelo de datos del modo Datastore.
Resumen del tiempo de vida
Usa políticas de TTL para eliminar automáticamente los datos obsoletos de tus bases de datos. Una política de TTL designa una propiedad determinada como la hora de vencimiento de las entidades de un tipo concreto. Con TTL, puedes reducir los costes de almacenamiento eliminando los datos obsoletos. Los datos suelen eliminarse en un plazo de 24 horas después de su fecha de vencimiento.
Precios
Las operaciones de eliminación por TTL se tienen en cuenta en los costes de eliminación de entidades. Para consultar los precios de las operaciones de eliminación, consulta los precios de Firestore en el modo de Datastore.
Límites y restricciones
- Solo puedes marcar una propiedad por tipo como propiedad de TTL.
- Puedes tener un máximo de 500 políticas de TTL.
Eliminación de TTL
Ten en cuenta los siguientes comportamientos clave de la eliminación basada en TTL:
La eliminación mediante TTL no es un proceso instantáneo. Las entidades caducadas siguen apareciendo en las consultas y las solicitudes de búsqueda hasta que el proceso de TTL las elimina. El TTL intercambia la puntualidad de la eliminación por el beneficio de reducir el coste total de propiedad de las eliminaciones. Los datos suelen eliminarse en un plazo de 24 horas después de su fecha de vencimiento.
Al eliminar una entidad mediante TTL, no se eliminan las entidades secundarias de esa entidad.
Si se aplica una política de TTL a un tipo ya existente, se eliminarán en bloque todos los datos que hayan caducado según la nueva política de TTL. Ten en cuenta que esta eliminación en bloque tampoco es instantánea y depende de la cantidad de datos que haya de ese tipo.
Si una entidad tiene un tiempo de vencimiento anterior y añades una nueva política de TTL al tipo, la entidad se eliminará en un plazo de 24 horas después de que se complete la configuración de la política de TTL y se active.
El TTL no elimina necesariamente las entidades en el mismo orden que sus marcas de tiempo de vencimiento.
Las eliminaciones no se realizan de forma transaccional. Las entidades con la misma hora de vencimiento no se eliminan necesariamente al mismo tiempo. Si necesitas este comportamiento, realiza las eliminaciones con una biblioteca de cliente.
El modo Datastore siempre tendrá en cuenta el campo TTL más reciente para determinar la caducidad. Por ejemplo, si se actualiza el campo TTL de una entidad caducada pero aún no eliminada a una fecha posterior, la entidad no caducará y se usará la nueva fecha.
El modo Datastore solo caducará un documento cuando el campo TTL se haya definido como de tipo
Timestamp
. Si no se incluye el campo o se le asigna un valor comonull
, se pueden inhabilitar las caducidades por documento.El TTL se ha diseñado para minimizar el impacto en otras actividades de la base de datos. Las eliminaciones basadas en el TTL se tratan con una prioridad más baja. También se han implementado otras estrategias para suavizar los picos de tráfico provocados por las eliminaciones basadas en TTL.
Propiedades e índices de TTL
Una propiedad TTL puede estar indexada o no. Sin embargo, como una propiedad TTL es una marca de tiempo, indexar la propiedad puede afectar al rendimiento con tasas de tráfico más altas. Indexar una propiedad de marca de tiempo no es una práctica recomendada y puede crear puntos de acceso. Los puntos de acceso son tasas altas de lectura, escritura y eliminación en un intervalo de claves reducido.
De forma predeterminada, Datastore crea un índice integrado para todas las propiedades. Puedes excluir una propiedad de los índices para inhabilitar los índices en una propiedad TTL.
Permisos
La principal que configura una política de TTL requiere el siguiente permiso en el proyecto:
- Para ver las políticas de TTL, se necesitan los permisos
datastore.indexes.list
ydatastore.indexes.get
. - Para modificar las políticas de TTL, se necesita el permiso
datastore.indexes.update
. - Para comprobar el estado de las operaciones de TTL, se necesitan los permisos
datastore.operations.list
ydatastore.operations.get
.
Para ver los roles que asignan estos permisos, consulta Roles de gestión de identidades y accesos de Datastore.
Antes de empezar
Antes de usar la CLI de gcloud para gestionar las políticas de TTL, usa el comando
gcloud components update
para actualizar los componentes a la versión más reciente disponible:
gcloud components update
Crear una política de TTL
Cuando creas una política de TTL, designas una propiedad de entidad como la hora de vencimiento de las entidades de un tipo. La política de TTL se aplica al tipo especificado en todos los espacios de nombres.
El TTL usa una propiedad especificada para identificar las entidades que se pueden eliminar. Esta propiedad TTL debe ser de tipo Date and time
. Puedes seleccionar una propiedad que ya exista o designar una que tengas previsto añadir más adelante.
Antes de definir el valor de la propiedad TTL, tenga en cuenta lo siguiente:
El valor de la propiedad TTL puede ser una hora futura, actual o pasada. Si el valor es una hora del pasado, la entidad podrá eliminarse inmediatamente. Por ejemplo, puede crear una política de TTL con la propiedad
expireAt
, que luego añade a las entidades que ya tiene.Si se usa otro tipo de datos o no se define el valor de la propiedad TTL, se inhabilitará el TTL de la entidad en cuestión.
Sigue los pasos que se indican a continuación para crear una política de TTL:
Google Cloud consola
En la Google Cloud consola, ve a la página Bases de datos.
Seleccione la base de datos que necesite de la lista de bases de datos.
En el menú de navegación, haga clic en Tiempo de vida.
Haz clic enCreate Policy (Crear política).
Introduce un nombre de tipo y un nombre de propiedad de marca de tiempo.
Haz clic en Crear.
La consola vuelve a la página Tiempo de vida. Si la operación se inicia correctamente, la página añade una entrada a la tabla de políticas de TTL. Si se produce un error, la página muestra un mensaje de error.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
firestore fields ttls update
para configurar una política de TTL. Añade la marca--async
para evitar que la CLI de gcloud espere a que se complete la operación.gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Incluso en una base de datos vacía, se pueden tardar diez minutos o más en habilitar una política de TTL. Una vez que hayas iniciado una operación, cerrar la terminal no la cancelará.
Ver políticas de TTL
Siga los pasos que se indican a continuación para ver las políticas de TTL y sus estados.
Google Cloud consola
En la Google Cloud consola, ve a la página Bases de datos.
Seleccione la base de datos que necesite de la lista de bases de datos.
En el menú de navegación, haga clic en Tiempo de vida.
La Google Cloud consola muestra las políticas de TTL de tu base de datos e incluye el estado de cada política.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
firestore fields ttls list
para ver una política de TTL. El siguiente comando muestra todas las políticas de TTL.gcloud firestore fields ttls list
Para enumerar las políticas de TTL de un tipo específico, utiliza el siguiente código:
gcloud firestore fields ttls list --collection-group=collection_group_name
Ver los detalles de la operación
Puedes usar la CLI de gcloud para ver más detalles sobre una política de TTL que esté en el estado CREATING
.
Usa el comando operations list
para ver todas las operaciones en curso y las que se han completado recientemente:
gcloud firestore operations list
La respuesta incluye una estimación del progreso de la operación.
Inhabilitar una política de TTL
Sigue los pasos que se indican a continuación para inhabilitar una política de TTL.
Google Cloud consola
En la Google Cloud consola, ve a la página Bases de datos.
Seleccione la base de datos que necesite de la lista de bases de datos.
En el menú de navegación, haga clic en Tiempo de vida.
En la tabla de políticas de TTL, busque la fila de la política de TTL. En esta fila de la tabla, haz clic en el botón Eliminar (papelera).
Haz clic en Eliminar para confirmar la operación.
La consola Google Cloud vuelve a la página Tiempo de vida. Si la operación se realiza correctamente, Datastore elimina la política de TTL de la tabla.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
firestore fields ttls update
para configurar una política de TTL. Añade la marca--async
para evitar que la CLI de gcloud espere a que se complete la operación.gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
Monitorizar las eliminaciones de TTL
Puede usar Cloud Monitoring para ver métricas sobre las eliminaciones basadas en TTL. Datastore proporciona las siguientes métricas para el TTL:
datastore.googleapis.com/entity/ttl_deletion_count | Número de eliminaciones de TTL |
Número total de entidades eliminadas por las políticas de TTL. |
datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | Retrasos en la eliminación tras el vencimiento del TTL |
Tiempo transcurrido entre el momento en que una entidad caducó según una política de TTL y el momento en que se eliminó. |
Para configurar un panel de control con métricas de Datastore, consulta Gestionar paneles de control personalizados y Añadir widgets a un panel de control.