En esta página, se describe cómo usar Google Cloud Platform Console y Google Cloud CLI para configurar políticas de tiempo de vida (TTL). Antes de leer esta página, debe comprender el modelo de datos de Cloud Firestore .
Descripción general 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 dado como el tiempo de vencimiento de los documentos en un grupo de colección determinado. Con TTL, puede reducir los costos de almacenamiento al eliminar los datos obsoletos. Los datos generalmente se eliminan dentro de las 72 horas posteriores a su fecha de vencimiento.
Precios
Las operaciones de eliminación de 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 varias 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 hacia el límite.
eliminación de TTL
Tenga en cuenta los siguientes comportamientos clave de la eliminación controlada por TTL:
La eliminación a través de TTL no es un proceso instantáneo. Los documentos vencidos siguen apareciendo en consultas y solicitudes de búsqueda hasta que el proceso TTL los elimina. TTL intercambia la puntualidad de la eliminación en beneficio de la reducción del costo total de propiedad para las eliminaciones. Los datos generalmente se eliminan dentro de las 72 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 vencieron de acuerdo con 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.
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 el mismo tiempo de caducidad no se eliminan necesariamente al mismo tiempo. Si necesita este comportamiento, realice las eliminaciones mediante una biblioteca de cliente.
Cloud Firestore siempre respetará el campo TTL más reciente 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 una prioridad más baja. También existen otras estrategias para suavizar los picos de tráfico de las eliminaciones impulsadas por TTL.
La eliminación a través de TTL envía notificaciones automáticas para los agentes de escucha de instantáneas activos y activa los activadores de Cloud Functions Cloud Firestore.
Campos e índices TTL
Un campo TTL se puede indexar o no indexar. 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 son tasas altas de lectura, escritura y eliminación en un rango de documentos estrecho.
De forma predeterminada, Cloud Firestore crea un índice de campo único para todos los campos. Puede crear una exención de índice de un solo campo para deshabilitar índices en un campo TTL.
permisos
El principal que configura una política TTL requiere el siguiente permiso en el proyecto:
- Ver políticas TTL requiere los permisos
datastore.indexes.list
ydatastore.indexes.get
. - La modificación de políticas TTL requiere el permiso
datastore.indexes.update
. - Verificar el estado de las operaciones TTL requiere
datastore.operations.list
ydatastore.operations.get
.
Para conocer las funciones que asignan estos permisos, consulte Funciones de administración de acceso e identidad de Cloud Firestore .
Antes de que empieces
Antes de usar la CLI de gcloud para administrar las políticas de TTL, use el comando de actualización de componentes de 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 colección.
TTL usa un campo específico para identificar los 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. El valor del campo TTL puede ser un tiempo en el futuro, ahora o en el pasado. Si el valor es tiempo en el pasado, el documento se puede eliminar inmediatamente.
Por ejemplo, puede crear una política TTL con el campo expireAt
que luego agregará a los documentos existentes.
Siga los pasos a continuación para crear una política TTL:
Consola de la nube de Google
Vaya a la página Tiempo de vida de Cloud Firestore en Google Cloud Platform Console.
Haga clic en Crear política .
Introduzca un nombre de grupo de recopilación 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 agrega una entrada a la tabla de políticas TTL. En caso de falla, la página muestra un mensaje de error.
gcloud
Use el comando de firestore fields ttls update
para configurar una política TTL. Agrega la --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 la terminal no cancela la operación.
Ver políticas TTL
Siga los pasos a continuación para ver las políticas de TTL y sus estados.
Consola de la nube de Google
Vaya a la página Tiempo de vida de Cloud Firestore en Google Cloud Platform Console.
La consola enumera las políticas TTL para su base de datos e incluye el estado de cada política.
gcloud
Use 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 colección específico, use lo siguiente:
gcloud firestore fields ttls list --collection-group=collection_group_name
Ver detalles de la operación
Puede usar la CLI de gcloud para ver más detalles sobre una política TTL que se encuentra en estado CREATING
.
Use el comando de la operations list
para ver todas las operaciones en ejecución y recientemente completadas:
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 la nube de Google
Vaya a la página Tiempo de vida de Cloud Firestore en Google Cloud Platform Console.
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).
Confirme haciendo clic en Eliminar .
La consola vuelve a la página Tiempo de vida . En caso de éxito, Cloud Firestore elimina la política TTL de la tabla.
gcloud
Use el comando de firestore fields ttls update
para configurar una política TTL. Agrega la --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
Supervisar las eliminaciones de TTL
Puede usar Cloud Monitoring para ver métricas sobre eliminaciones impulsadas por TTL. Cloud Firestore proporciona las siguientes métricas para TTL:
Recuento de eliminación de tiempo de vida | Recuento total de documentos eliminados por políticas de tiempo de vida (TTL). |
Caducidad del tiempo de vida hasta retrasos en la eliminación | El tiempo transcurrido entre el momento en que expiró un documento según una política de tiempo de vida (TTL) y el momento en que realmente se eliminó. |
Para configurar un panel con métricas de Cloud Firestore, consulte administrar un panel personalizado y agregar widgets de panel .