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

Esta página describe cómo utilizar Google Cloud Platform Console y Google Cloud CLI para configurar políticas de tiempo de vida (TTL). Antes de leer esta página, debes comprender el modelo de datos de Cloud Firestore .

Resumen del tiempo de vida

Utilice políticas de tiempo de vida (TTL) para eliminar automáticamente los datos obsoletos de sus bases de datos. Una política TTL designa un campo determinado como el tiempo de vencimiento de los documentos en un grupo de colección determinado. Con TTL, puede reducir los costos de almacenamiento eliminando datos obsoletos. Los datos normalmente se eliminan dentro de las 24 horas posteriores a su fecha de vencimiento.

Precios

Las operaciones de eliminación TTL cuentan para los costos de eliminación de documentos. Para conocer los precios de las operaciones de eliminación, consulte Precios de Cloud Firestore .

Límites y restricciones

  • Solo se puede marcar un campo por grupo de colección como campo TTL.
  • Se permiten un total de 200 configuraciones a nivel de campo. Una configuración de campo puede contener múltiples configuraciones para el mismo campo. Por ejemplo, una exención de indexación de un solo campo y una política TTL en el mismo campo cuentan como una configuración de campo para el límite.
  • Para los clientes de Firestore en modo Datastore, TTL no se puede usar con un modo de concurrencia Optimista con grupos de entidades . Considere cambiar el modo de concurrencia después de esto .

eliminación de TTL

Tenga 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 consultas y solicitudes de búsqueda hasta que el proceso TTL los elimina. TTL intercambia la puntualidad de la eliminación por el beneficio de un costo total de propiedad reducido para las eliminaciones. Los datos normalmente se eliminan dentro de las 24 horas posteriores a su fecha de vencimiento.

  • Eliminar un documento a través de TTL no elimina las subcolecciones de ese documento.

  • La aplicación de una política TTL en un grupo de recopilación existente da como resultado una eliminación masiva de todos los datos que han caducado según la nueva política TTL. Tenga en cuenta que esta eliminación masiva tampoco es instantánea y depende de la cantidad de datos que existan para ese grupo de recopilación.

  • Si un documento tiene una fecha de vencimiento en el pasado y agrega una nueva política ttl a la colección, el documento se eliminará dentro de las 24 horas posteriores a que la política ttl finalice su configuración y se active.

  • TTL no necesariamente elimina 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 eliminan al mismo tiempo. Si necesita este comportamiento, realice las eliminaciones utilizando una biblioteca cliente.

  • Cloud Firestore siempre respetará el último campo TTL para determinar el vencimiento. Por ejemplo, si un documento caducado pero aún no eliminado tiene su campo TTL actualizado a una fecha posterior, el documento no caducará y se utilizará la nueva fecha.

  • TTL está diseñado para minimizar el impacto en otras actividades de la base de datos. Las eliminaciones impulsadas por TTL se tratan con menor prioridad. También existen otras estrategias para suavizar los picos de tráfico debido a las eliminaciones impulsadas por TTL.

  • La eliminación a través de TTL llama a todos los oyentes de instantáneas activos y activa los activadores de Cloud Functions Cloud Firestore.

Campos e índices TTL

Un campo TTL puede estar indexado o no indexado. Sin embargo, debido a que un campo TTL es una marca de tiempo, la indexación del campo puede afectar el rendimiento a tasas de tráfico más altas. La indexación de un campo de marca de tiempo puede crear puntos de acceso que van en contra de las mejores prácticas. Los puntos de acceso tienen altas tasas de lectura, escritura y eliminación de un rango reducido de documentos.

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

Permisos

El director que configura una política TTL requiere el siguiente permiso en el proyecto:

  • La visualización de políticas TTL requiere los permisos datastore.indexes.list y datastore.indexes.get .
  • La modificación de las políticas TTL requiere el permiso datastore.indexes.update .
  • Para verificar el estado de las operaciones TTL se requieren datastore.operations.list y datastore.operations.get .

Para conocer los roles que asignan estos permisos, consulte Roles de administración de acceso e identidad de Cloud Firestore .

Antes de que empieces

Antes de usar la CLI de gcloud para administrar políticas TTL, usa el comando gcloud components update para actualizar los componentes a la última versión disponible:

gcloud components update

Crear una política TTL

Cuando crea una política TTL, designa un campo de documento como el tiempo de vencimiento para los documentos en un grupo de recopilación.

TTL utiliza un campo específico para identificar documentos que son elegibles para su eliminación. Este campo TTL debe ser de tipo Date and time . Puede seleccionar un campo que ya existe o puede designar un campo que planea agregar más adelante.

Considere lo siguiente antes de establecer el valor del campo TTL:

  • El valor del campo TTL puede ser un momento en el futuro, ahora o en el pasado. Si el valor es un momento en el pasado, el documento es inmediatamente elegible para su eliminación. Por ejemplo, puede crear una política TTL con el campo expireAt , que luego agrega a los documentos existentes.

  • Usar cualquier otro tipo de datos o no configurar el valor del campo TTL deshabilitará el TTL para el documento individual.

Siga los pasos a continuación para crear una política TTL:

Consola de Google Cloud

  1. En la consola de Google Cloud Platform, vaya a la página Bases de datos .

    Ir a Bases de Datos

  2. Seleccione la base de datos requerida de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Tiempo de vida .

  4. Haga clic en Crear política .

  5. Introduzca un nombre de grupo de recopilación y un nombre de campo de marca de tiempo.

  6. Haga clic en Crear .

La consola regresa a la página Tiempo de vida . Si la operación se inicia correctamente, la página agrega una entrada a la tabla de políticas TTL. En caso de error, la página muestra un mensaje de error.

nube de gcloud

Utilice el comando firestore fields ttls update para configurar una política TTL. Agrega 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, puede llevar diez minutos o más habilitar una política TTL. Una vez que inicia una operación, cerrar el terminal no cancela la operación.

Ver políticas TTL

Siga los pasos a continuación para ver las políticas TTL y sus estados.

Consola de Google Cloud

  1. En la consola de Google Cloud Platform, vaya a la página Bases de datos .

    Ir a Bases de Datos

  2. Seleccione la base de datos requerida de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Tiempo de vida .

La consola enumera las políticas TTL para su base de datos e incluye el estado de cada política.

nube de gcloud

Utilice el comando firestore fields ttls list para configurar una política TTL. El siguiente comando enumera todas las políticas TTL.

   gcloud firestore fields ttls list
   

Para enumerar las políticas TTL en un grupo de recopilación específico, utilice lo siguiente:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

Ver detalles de la operación

Puedes usar la CLI de gcloud para ver más detalles sobre una política TTL que se encuentra en estado CREATING .

Utilice el comando operations list para ver todas las operaciones en ejecución y completadas recientemente:

gcloud firestore operations list

La respuesta incluye una estimación del progreso de la operación.

Deshabilitar una política TTL

Siga los pasos a continuación para deshabilitar una política TTL.

Consola de Google Cloud

  1. En la consola de Google Cloud Platform, vaya a la página Bases de datos .

    Ir a Bases de Datos

  2. Seleccione la base de datos requerida de la lista de bases de datos.

  3. En el menú de navegación, haga clic en Tiempo de vida .

  4. En la tabla de políticas TTL, busque la fila de la política TTL. Dentro de esta fila de la tabla, haga clic en el botón Eliminar (papelera).

  5. Confirme haciendo clic en Eliminar .

La consola regresa a la página Tiempo de vida . Si tiene éxito, Cloud Firestore elimina la política TTL de la tabla.

nube de gcloud

1. Utilice el comando firestore fields ttls update para configurar una política TTL. Agrega 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
   

Monitorear eliminaciones TTL

Puede utilizar Cloud Monitoring para ver métricas sobre eliminaciones basadas en TTL. Cloud Firestore proporciona las siguientes métricas para TTL:

firestore.googleapis.com/document/ttl_deletion_count Recuento de eliminaciones del tiempo de vida

Recuento total de documentos eliminados por políticas de tiempo de vida (TTL).

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Vencimiento del tiempo de vida hasta retrasos en la eliminación

Tiempo transcurrido entre el momento en que un documento expiró según una política de tiempo de vida (TTL) y el momento en que se eliminó realmente.

Para configurar un panel con métricas de Cloud Firestore, consulte administrar el panel personalizado y agregar widgets del panel .