Administra la retención de datos con políticas de TTL
En esta página, se describe cómo usar la Google Cloud consola y Google Cloud CLI para configurar las políticas de tiempo de actividad (TTL).Descripción general del tiempo de actividad
Usa políticas de TTL para quitar automáticamente los datos inactivos de tus bases de datos. Una política de TTL designa un campo determinado como la hora de vencimiento de los documentos en una colección determinada. Con el TTL, puedes disminuir los costos de almacenamiento borrando los datos obsoletos. Por lo general, los datos se borran 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 para los costos de eliminación de documentos. Para conocer los precios de las operaciones de eliminación, consulta los precios de la edición empresarial de Firestore.
Límites y restricciones
- Solo puedes marcar un campo por colección como campo TTL.
- Puedes tener un máximo de 500 configuraciones de TTL a nivel del campo.
Eliminación del TTL
Ten en cuenta los siguientes comportamientos clave de la eliminación basada en el TTL:
La eliminación mediante el TTL no es un proceso instantáneo. Los documentos vencidos seguirán apareciendo en consultas y solicitudes de búsqueda hasta que el proceso del TTL los borre. El TTL cambia la puntualidad de la eliminación por el beneficio de un costo total de propiedad disminuido para las eliminaciones. Por lo general, los datos se borran en un plazo de 24 horas después de su fecha de vencimiento.
Aplicar una política de TTL en una colección existente genera una eliminación masiva de todos los datos vencidos de acuerdo con la política de TTL nueva. Ten en cuenta que esta eliminación masiva tampoco es instantánea y depende de la cantidad de datos que existen para esa colección.
Si un documento tiene una fecha de vencimiento en el pasado y agregas una política TTL nueva a la colección, el documento se borrará en un plazo de 24 horas después de que la política TTL finalice la configuración y esté activa.
El TTL no necesariamente borra los documentos en el mismo orden que sus marcas de tiempo de vencimiento.
Las eliminaciones no se realizan de forma transaccional. Los documentos con el mismo tiempo de vencimiento no necesariamente se borran a la vez. Si necesitas este comportamiento, realiza las eliminaciones mediante una biblioteca cliente.
Firestore con compatibilidad con MongoDB siempre respetará el último campo TTL para determinar el vencimiento. Por ejemplo, si se actualiza a una fecha posterior el campo TTL de un documento caducado, pero que aún no se borró, el documento no caducará y se utilizará la fecha nueva.
Firestore compatible con MongoDB hace que venza un documento solo cuando el campo TTL se configura en un tipo
Date and time
oBSON Date
. Deja el campo ausente o configúralo en un valor comonull
para inhabilitar los vencimientos de forma individual en cada documento.El TTL está diseñado para minimizar el impacto en otras actividades de la base de datos. Las eliminaciones que genera el TTL se tratan con una prioridad más baja. También se implementaron otras estrategias para limitar los aumentos repentinos de tráfico provenientes de las eliminaciones basadas en el TTL.
Índices y campos del TTL
Los campos del TTL se pueden indexar o no. Sin embargo, debido a que corresponden a marcas de tiempo, la indexación de los campos puede afectar el rendimiento cuando las tasas de tráfico son más altas. La indexación de un campo de marca de tiempo puede crear puntos calientes, lo que va en contra de las prácticas recomendadas. Los hotspots generan tasas altas de lectura, escritura y eliminación en un rango pequeño de documentos.
Permisos
La principal que configura una política de TTL requiere el siguiente permiso en el proyecto:
- La visualización de las políticas de TTL requiere los permisos
datastore.indexes.list
ydatastore.indexes.get
. - La modificación de las políticas de TTL requiere el permiso
datastore.indexes.update
. - Verificar el estado de las operaciones del TTL requiere
datastore.operations.list
ydatastore.operations.get
.
Para conocer los roles que asignan estos permisos, consulta Roles de administración de identidades y accesos de Firestore.
Antes de comenzar
Antes de usar la gcloud CLI para administrar las políticas de TTL, usa el comando
gcloud components update
a fin de actualizar los componentes a la última versión disponible:
gcloud components update
Crea una política de TTL
Cuando creas una política de TTL, designas un campo de documento como la hora de vencimiento de los documentos de una colección.
El TTL usa un campo especificado a fin de identificar los documentos aptos para borrarse.
Este campo del TTL debe ser del tipo Date and time
o BSON Date
. Puedes seleccionar un campo que
ya exista o designar un campo que planeas agregar más adelante.
Antes de configurar el valor del campo de TTL, ten en cuenta lo siguiente:
El valor del campo del TTL puede ser una hora actual, del futuro o del pasado. Si el valor es una hora del pasado, el documento es apto de inmediato para su eliminación. Por ejemplo, puedes crear una política de TTL con el campo
expireAt
, para luego agregarlo a los documentos existentes.Si usas cualquier otro tipo de datos o no configuras el valor del campo del TTL, se inhabilitará el TTL del documento individual.
Para crear una nueva política de respuesta, sigue estos pasos:
Consola de Google Cloud
En la Google Cloud consola, ve a la página Bases de datos.
Selecciona la base de datos requerida de la lista.
En el menú de navegación, haz clic en Tiempo de actividad.
Haz clic en Crear política.
Ingresa un nombre para la colección y otro para el campo de la marca de tiempo.
Haz clic en Crear.
La consola regresa a la página Tiempo de actividad. Si la operación se inicia correctamente, la página agrega 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. Agrega la marca--async
para evitar que la gcloud CLI espere a que se complete la operación.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --enable-ttl
Duración de la habilitación de la política de TTL
Incluso en una base de datos vacía, la política de TTL puede tardar diez minutos o más en habilitarse. Cuando inicies la operación, esta no se cancelará si cierras la terminal.
Ve las 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.
Selecciona la base de datos requerida de la lista.
En el menú de navegación, haz clic en Tiempo de actividad.
La consola enumera las políticas de TTL para tu base de datos y, además, 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 enumera todas las políticas de TTL.gcloud firestore fields ttls list
Para enumerar las políticas de TTL de una colección específica, usa el siguiente código:
gcloud firestore fields ttls list --collection-group=collection_name
Ve los detalles de la operación
Puedes usar la gcloud CLI para ver más detalles sobre una política de TTL
en estado CREATING
.
Para ver todas las operaciones en ejecución y las que se completaron recientemente,
usa el comando operations list
:
gcloud firestore operations list
La respuesta incluye una estimación del progreso de la operación.
Inhabilita 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.
Selecciona la base de datos requerida de la lista.
En el menú de navegación, haz clic en Tiempo de actividad.
En la tabla de políticas de TTL, busca la fila correspondiente. En esta fila de la tabla, haz clic en el botón Borrar (papelera).
Haz clic en Borrar para confirmar la acción.
La consola regresa a la página Tiempo de actividad. Si se ejecuta de forma correcta, Firestore con compatibilidad con MongoDB quita 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. Agrega la marca--async
para evitar que la gcloud CLI espere a que se complete la operación.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
Supervisa las eliminaciones del TTL
Puedes usar Cloud Monitoring para ver las métricas sobre las eliminaciones basadas en el TTL. Firestore con compatibilidad con MongoDB proporciona las siguientes métricas para el 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 del tiempo de actividad |
Recuento total de documentos borrados por las políticas de TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Retrasos entre el vencimiento del tiempo de actividad y la eliminación |
Tiempo transcurrido entre el vencimiento de un documento conforme a la política de TTL y el momento en que se borró. |
Para configurar un panel con las métricas de Firestore compatible con MongoDB, consulta Cómo administrar un panel personalizado y Cómo agregar widgets al panel.