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

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 una colección determinada. 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 la edición Enterprise 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 de campo.

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 se aplica una política de TTL a una colección, 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 esa colección.

  • 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 con compatibilidad con MongoDB 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 con compatibilidad con MongoDB solo caduca un documento cuando el campo TTL se define como de tipo Date and time o BSON Date. Deje el campo vacío o defina un valor como null para 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.

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.

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 y datastore.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 y datastore.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 una colección.

TTL usa un campo específico para identificar los documentos que se pueden eliminar. Este campo TTL debe ser de tipo Timestamp o BSON Date. 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

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

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

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

  4. Haz clic enCreate Policy (Crear política).

  5. Introduce un nombre de colección y un nombre de campo de marca de tiempo.

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

  1. In the Google Cloud console, activate Cloud Shell.

    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.

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

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

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite de la lista de bases de datos.

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

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 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 una colección específica, utiliza el siguiente código:

    gcloud firestore fields ttls list  --collection-group=collection_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

Para inhabilitar una política de TTL, sigue estos pasos:

Consola de Google Cloud

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

    Ir a Bases de datos

  2. Seleccione la base de datos que necesite 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 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).

  5. Haz clic en Eliminar para confirmar la operación.

La consola vuelve a la página Tiempo de vida. Si la operación se realiza correctamente, la compatibilidad de Firestore con MongoDB elimina la política de TTL de la tabla.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 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_name --disable-ttl
    

Monitorizar las eliminaciones de TTL

Puede usar Cloud Monitoring para ver métricas sobre las eliminaciones basadas en 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 Número 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 en la eliminación por caducidad 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 con compatibilidad con MongoDB, consulta los artículos sobre cómo gestionar paneles de control personalizados y añadir widgets a un panel de control.