Administra la retención de datos con políticas de TTL

En esta página, se describe cómo usar Google Cloud Console y Google Cloud CLI para configurar las políticas de tiempo de actividad (TTL). Antes de leer esta página, debes comprender el modelo de datos de Firestore.

Descripción general del tiempo de actividad

Usa políticas de tiempo de actividad (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 un grupo de colecciones determinado. Con el TTL, puedes disminuir los costos de almacenamiento borrando los datos obsoletos.

Límites y restricciones

  • Solo se puede marcar un campo por grupo de colecciones como campo TTL.
  • Se permite un total de 200 configuraciones a nivel de campo. La configuración de un campo puede contener múltiples configuraciones para el mismo campo. Por ejemplo, una exención de la indexación de campo único y una política de TTL en el mismo campo cuentan como una sola configuración para el límite.

Limitaciones de la vista previa pública

La vista previa pública del TTL incluye las siguientes limitaciones adicionales:

  • Facturación: Las eliminaciones del TTL son gratuitas durante la versión preliminar pública. Google Cloud se reserva el derecho de cobrar a los clientes por las eliminaciones del TTL en la fase de disponibilidad general.

  • No para las cargas de trabajo de producción: No recomendamos usar las funciones de versión preliminar pública en una base de datos de producción.

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.

  • Aplicar una política de TTL en un grupo de colecciones existente genera una eliminación masiva de todos los datos que vencieron de acuerdo con la política de TTL nueva. Ten en cuenta que esta eliminación masiva tampoco es instantánea.

  • 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 al mismo tiempo. Si necesitas este comportamiento, realiza las eliminaciones mediante una biblioteca cliente.

  • 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.

  • La eliminación mediante TTL llama a todos los objetos de escucha de instantáneas activos y activa los activadores de Firestore de Cloud Functions.

Í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 hotspots, 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.

De forma predeterminada, Firestore crea un índice de campo único para todos los campos. Puedes crear una exención de índice de campo único para inhabilitar los índices en un campo del TTL.

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 y datastore.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 y datastore.operations.get.

Para las funciones que asignan estos permisos, consulta Funciones 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 para los documentos de un grupo de colecciones.

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. Puedes seleccionar un campo que ya exista o designar un campo que planeas agregar más adelante. 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.

Sigue los pasos que se indican a continuación para crear una política de TTL:

Consola de Google Cloud

  1. Ve a la página Tiempo de actividad de Firestore en Google Cloud Console.

    Ir a la página Tiempo de actividad

  2. Haz clic en Crear política.

  3. Ingresa un nombre para el grupo de colecciones y otro para el campo de la marca de tiempo.

  4. Haga 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

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 beta firestore fields ttl update ttl_field --collection-group=collection_group_name --enable-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

Sigue los pasos que se indican a continuación para ver las políticas de TTL y sus estados.

Consola de Google Cloud

Ve a la página Tiempo de actividad de Firestore en Google Cloud Console.

Ir a la página 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

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 beta firestore fields ttl list

Para enumerar las políticas de TTL de un grupo de colecciones específico, usa el siguiente código:

gcloud beta firestore fields ttl list  --collection-group=collection_group_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

Sigue los pasos que se indican a continuación para inhabilitar una política de TTL.

Consola de Google Cloud

  1. Ve a la página Tiempo de actividad de Firestore en Google Cloud Console.

    Ir a la página Tiempo de actividad

  2. 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).

  3. Haz clic en Borrar para confirmar la acción.

La consola regresa a la página Tiempo de actividad. Si se realiza de forma correcta, Firestore quita la política de TTL de la tabla.

gcloud

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 beta firestore fields ttl update ttl_field --collection-group=collection_group_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 proporciona las siguientes métricas para TTL:

Recuento de eliminaciones del tiempo de actividad

Recuento total de documentos borrados por las políticas de tiempo de actividad (TTL)

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 tiempo de actividad (TTL) y el momento en que se borró.

Para configurar un panel con métricas de Firestore, consulta Administra paneles personalizados y Agrega widgets de panel.