Gestionar la conservación de datos con políticas de TTL
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 de Firestore.
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 un campo concreto como la hora de vencimiento de los documentos de un grupo de colecciones determinado. 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 de TTL se tienen en cuenta en los costes de eliminación de documentos. Para consultar los precios de las operaciones de eliminación, consulta los precios de Firestore.
Límites y restricciones
- Solo puedes marcar un campo por grupo de colección como campo TTL.
- Se permite un máximo de 500 configuraciones a nivel de campo. Una configuración de campo puede contener varias configuraciones para el mismo campo. Por ejemplo, una exención de indexación de un solo campo y una política de TTL en el mismo campo se consideran una configuración de campo de cara al límite.
- En el caso de los clientes de Firestore en modo Datastore, TTL no se puede usar con el modo de simultaneidad Optimista con grupos de entidades. Plantéate cambiar el modo de simultaneidad al modo de simultaneidad optimista.
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. Los documentos caducados siguen apareciendo en las consultas y solicitudes de búsqueda hasta que el proceso de TTL los 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.
Si eliminas un documento mediante TTL, no se eliminarán las subcolecciones que contenga.
Si se aplica una política de TTL a un grupo de colecciones, se eliminarán en bloque todos los datos caducados 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 en ese grupo de colecciones.
Si un documento tiene una hora de vencimiento anterior y añades una nueva política de TTL a la colección, el documento se eliminará en un plazo de 24 horas a partir de que se configure y se active la política de TTL.
El TTL no elimina necesariamente los documentos en el mismo orden que sus marcas de tiempo de vencimiento.
Las eliminaciones no se realizan de forma transaccional. Los documentos 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.
Firestore siempre tendrá en cuenta el campo TTL más reciente para determinar la fecha de vencimiento. Por ejemplo, si se actualiza el campo TTL de un documento caducado pero aún no eliminado a una fecha posterior, el documento no caducará y se usará la nueva fecha.
Firestore caduca un documento solo cuando el campo TTL se define como un tipo
Date and time
. 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.
La eliminación mediante TTL llama a todos los listeners de instantáneas activos y activa las funciones de Cloud Run y los activadores de Firestore.
Campos e índices TTL
Un campo TTL puede estar indexado o no. Sin embargo, como el campo TTL es una marca de tiempo, indexarlo puede afectar al rendimiento con tasas de tráfico más altas. Indexar un campo de marca de tiempo puede crear puntos de acceso, lo que no es una práctica recomendada. Los puntos de acceso son tasas altas de lectura, escritura y eliminación en un intervalo de documentos reducido.
De forma predeterminada, Firestore crea un índice de un solo campo para todos los campos. Puedes crear una exención de índice de campo único para inhabilitar los índices de un campo 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 Firestore.
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 un campo de documento como hora de vencimiento de los documentos de un grupo de colecciones.
TTL usa un campo específico para identificar los documentos que se pueden eliminar.
Este campo TTL debe ser de tipo Date and time
. Puede seleccionar un campo que ya exista o designar un campo que quiera añadir más adelante.
Tenga en cuenta lo siguiente antes de definir el valor del campo TTL:
El valor del campo TTL puede ser una hora futura, actual o pasada. Si el valor es una hora del pasado, el documento se puede eliminar inmediatamente. Por ejemplo, puedes crear una política de TTL con el campo
expireAt
, que luego puedes añadir a documentos ya creados.Si se usa otro tipo de datos o no se define el valor del campo TTL, se inhabilitará el TTL del documento en cuestión.
Para crear una política de TTL, siga estos pasos:
Consola de Google Cloud
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 grupo de colecciones y un nombre de campo 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
Duración de la habilitación de la política de 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 inicies una operación, cerrar la terminal no la cancelará.
Ver políticas de TTL
Para ver las políticas de TTL y sus estados, sigue estos pasos:
Consola de Google Cloud
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 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 configurar 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 grupo de colecciones específico, utiliza el siguiente comando:
gcloud firestore fields ttls list --collection-group=collection_group_name
View operation details
You can use the gcloud CLI to view more details about a TTL policy
that is in the CREATING
state.
Use the operations list
command to see all running and
recently completed operations:
gcloud firestore operations list
La respuesta incluye una estimación del progreso de la operación.
Inhabilitar una política de TTL
Para inhabilitar una política de TTL, sigue estos pasos:
Consola de Google Cloud
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 vuelve a la página Tiempo de vida. Si se completa correctamente, Firestore 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. Firestore proporciona las siguientes métricas de TTL:
Tipo de métrica | Nombre de la métrica | Descripción de la métrica |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Recuento de eliminaciones por tiempo de vida |
Recuento total de documentos eliminados por las políticas de TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Retrasos de eliminación por vencimiento del tiempo de vida |
Tiempo transcurrido entre el momento en que un documento 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 Firestore, consulte Gestionar paneles de control personalizados y Añadir widgets a un panel de control.