En esta página, se describe cómo usar la Google Cloud consola de 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 del modo Datastore.
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 una propiedad determinada como la hora de vencimiento de las entidades en un tipo determinado. 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 entidades. Para conocer los precios de las operaciones de eliminación, consulta los precios de Firestore en modo Datastore.
Límites y restricciones
- Solo puedes marcar una propiedad por tipo como propiedad TTL.
- Puedes tener un máximo de 500 políticas de TTL.
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. Las entidades vencidas 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.
Si borras una entidad a través del TTL, no se borrarán las entidades descendientes de esa entidad.
Aplicar una política de TTL en un tipo 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 no es instantánea y depende de la cantidad de datos que existen para ese tipo.
Si una entidad tiene una fecha de vencimiento en el pasado y agregas una política TTL nueva al tipo, la entidad 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 las entidades en el mismo orden que sus marcas de tiempo de vencimiento.
Las eliminaciones no se realizan de forma transaccional. Las entidades con el mismo tiempo de vencimiento no necesariamente se borran a la vez. Si necesitas este comportamiento, realiza las eliminaciones mediante una biblioteca cliente.
El modo Datastore siempre respetará el último campo TTL para determinar el vencimiento. Por ejemplo, si se actualiza a una fecha posterior el campo TTL de una entidad caducada, pero que aún no se borró, la entidad no caducará y se utilizará la fecha nueva.
El modo Datastore solo hará que venza un documento cuando el campo TTL se configure en un tipo
Timestamp. Si dejas el campo ausente o se establece en un valor comonull, los vencimientos se pueden inhabilitar 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 propiedades del TTL
Las propiedades del TTL se pueden indexar o no. Sin embargo, debido a que corresponden a marcas de tiempo, la indexación de las propiedades puede afectar el rendimiento cuando las tasas de tráfico son más altas. La indexación de una propiedad de marca de tiempo va en contra de las prácticas recomendadas y puede crear hotspots. Los hotspots generan tasas altas de lectura, escritura y eliminación en un rango pequeño de claves.
De forma predeterminada, Datastore crea un índice integrado para todas las propiedades. Puedes excluir una propiedad de los índices para inhabilitar los índices en una propiedad 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.listydatastore.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.listydatastore.operations.get.
Para conocer los roles que asignan estos permisos, consulta Roles de Identity and Access Management de Datastore.
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 una propiedad de entidad como la hora de vencimiento para las entidades de un tipo. La política de TTL se aplica al tipo especificado en todos los espacios de nombres.
El TTL usa una propiedad especificada para identificar las entidades aptas para borrarse. Esta propiedad del TTL debe ser del tipo Date and time. Puedes seleccionar una propiedad que ya existe o designar una que planeas agregar más adelante.
Antes de configurar el valor de la propiedad de TTL, ten en cuenta lo siguiente:
El valor de la propiedad del TTL puede ser una hora actual, del futuro o del pasado. Si el valor es una hora en el pasado, la entidad es apta para borrarse de inmediato. Por ejemplo, puedes crear una política de TTL con la propiedad
expireAt, para luego agregarlo a las entidades existentes.Si usas cualquier otro tipo de datos o no configuras el valor de la propiedad del TTL, se inhabilitará el TTL de la entidad individual.
Sigue los pasos que se indican a continuación para crear una política de TTL:
Google Cloud Consola de
En la Google Cloud consola de, 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 el tipo y otro para la propiedad 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
-
En la Google Cloud consola de, activa Cloud Shell.
En la parte inferior de la Google Cloud consola de, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Usa el
firestore fields ttls updatecomando para configurar una política de TTL. Agrega la marca--asyncpara evitar que la gcloud CLI 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, la política de TTL puede tardar diez minutos o más en habilitarse. Después de iniciar una operación, si cierras la terminal, no se cancela la operación.
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.
Google Cloud Consola de
En la Google Cloud consola de, 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 Google Cloud consola de enumera las políticas de TTL para tu base de datos y, además, incluye el estado de cada política.
gcloud
-
En la Google Cloud consola de, activa Cloud Shell.
En la parte inferior de la Google Cloud consola de, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Usa el
firestore fields ttls listcomando para ver 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 un tipo específico, usa el siguiente código:
gcloud firestore fields ttls 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.
Google Cloud Consola de
En la Google Cloud consola de, 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 Google Cloud consola de regresa a la página Tiempo de actividad. Si la operación se realiza correctamente, Datastore quita la política de TTL de la tabla.
gcloud
-
En la Google Cloud consola de, activa Cloud Shell.
En la parte inferior de la Google Cloud consola de, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Usa el
firestore fields ttls updatecomando para configurar una política de TTL. Agrega la marca--asyncpara evitar que la gcloud CLI espere a que se complete la operación.gcloud firestore fields ttls 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. Datastore proporciona las siguientes métricas para el TTL:
| datastore.googleapis.com/entity/ttl_deletion_count | Recuento de eliminaciones de TTL |
Recuento total de entidades borradas por las políticas de TTL. |
| datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | Retrasos entre el vencimiento del TTL y la eliminación |
Tiempo transcurrido entre el momento en que venció una entidad según una política de TTL y el momento en que se borró. |
Para configurar un panel con métricas de Datastore, consulta Administra un panel personalizado y Agrega widgets al panel.