Descripción general del tiempo de actividad (TTL)

El tiempo de actividad (TTL) te permite establecer políticas para borrar periódicamente datos de las tablas de Spanner. Quita los datos innecesarios:

  • Disminuye los costos de almacenamiento y copias de seguridad.
  • Reduce la cantidad de filas que la base de datos debe analizar para algunas consultas, lo que puede aumentar el rendimiento de las consultas.
  • Ayuda a cumplir con las reglamentaciones o los lineamientos de la industria que limitan el tiempo de retención de ciertos tipos de datos.

El TTL es ideal para las actividades de limpieza periódicas. Se ejecuta de forma continua en segundo plano y borra periódicamente los datos aptos en lotes. Por lo general, los datos se borran en un plazo de 72 horas después de su fecha de vencimiento. Cada eliminación requiere una replicación de clave primaria en las réplicas de la base de datos, lo que genera costos de replicación. Para obtener más información, consulta los precios de la replicación de datos. El TTL no invalida los datos de inmediato ni los oculta de las consultas cuando son aptos para su eliminación. El TTL tampoco verifica los datos mientras se insertan, por lo que no te impide insertar una fila con una marca de tiempo vencida.

El TTL está diseñado para minimizar el impacto en otras cargas de trabajo de la base de datos. El proceso de limpieza de TTL funciona en segundo plano con prioridad baja del sistema. Distribuye el trabajo a lo largo del tiempo y los recursos de instancias disponibles de manera más eficiente que las consultas de los usuarios finales, y también incluye lógica de reintentos para garantizar la limpieza de extremo a extremo con una sobrecarga de procesamiento mínima.

Otro proceso de compactación en segundo plano reclama el almacenamiento de las filas borradas, por lo general, en un plazo de siete días.

¿Cómo funciona el TTL?

Puedes configurar el TTL en las tablas de Spanner definiendo una política de eliminación de filas en el esquema de la base de datos. Esta política permite que Spanner borre periódicamente los datos innecesarios. Las políticas de TTL tienen las siguientes características:

  • Cada tabla puede tener su propia política.
  • Solo se puede especificar una política de TTL por tabla.
  • El TTL se configura de manera diferente para las bases de datos con dialecto de GoogleSQL y las bases de datos con dialecto de PostgreSQL.
  • La política de TTL no borra las filas que tienen la marca de tiempo establecida en NULL.
  • Los datos insertados con marcas de tiempo vencidas se limpian cuando se detectan en el siguiente ciclo de eliminación del TTL.

TTL con GoogleSQL

Con GoogleSQL, puedes definir una política de eliminación de filas especificando una marca de tiempo y un intervalo para determinar cuándo una fila es apta para su eliminación; por ejemplo, la fecha de la última actualización más 30 días.

Un proceso del sistema en segundo plano verifica las filas aptas todos los días. Paraleliza las eliminaciones reales en lotes que se ejecutan cerca de donde se almacenan los datos internamente. Cada lote se ejecuta en su propia transacción en una marca de tiempo coherente. Por lo tanto, las filas de un lote determinado, junto con los índices y los elementos secundarios intercalados, se borran de forma atómica. Sin embargo, las eliminaciones en lotes se realizan en diferentes transacciones.

Dado que se trata de un proceso en segundo plano asíncrono, hay una demora entre la elegibilidad y el borrado. Por lo general, la demora es de menos de 72 horas. Como resultado, es posible que las filas permanezcan en tu tabla hasta tres días después de que venza su TTL. Por ejemplo, una tabla con una política de eliminación de filas que borre las filas con más de cuatro días de antigüedad podría incluir filas de hasta siete días de antigüedad, así como filas más antiguas que no se pueden borrar.

Para obtener instrucciones paso a paso sobre cómo crear una política de eliminación de filas de GoogleSQL, consulta Crea una política de TTL.

TTL con PostgreSQL

Con PostgreSQL, el propietario de una base de datos puede usar una cláusula TTL INTERVAL en la instrucción CREATE TABLE o ALTER TABLE para definir una política de eliminación de filas.

Para establecer una política de eliminación de filas en una tabla de PostgreSQL, la tabla debe tener una columna con el tipo de datos TIMESTAMPTZ. La cláusula TTL INTERVAL usa esta columna para establecer una especificación de intervalo sobre cuándo una fila es apta para su eliminación.

La cláusula debe evaluarse como una cantidad entera de días. Por ejemplo, '3 DAYS' y '4 DAYS 2 MINUTES - 2 MINUTES' están permitidos, pero '4 DAYS 3 MINUTES' no lo está y se muestra un error. No puedes usar números negativos.

Recolección de elementos no utilizados usados del TTL borra las filas aptas de forma continua y en segundo plano. Como se trata de un proceso en segundo plano asíncrono, hay una demora entre la elegibilidad y la eliminación. La tabla puede contener filas aptas para el borrado por TTL, pero para las que aún no se completó el TTL. Por lo general, la demora es inferior a 72 horas.

Para obtener instrucciones sobre cómo crear una política de eliminación de filas de PostgreSQL, consulta Crea una política de TTL.

Copias de seguridad y TTL

Restablecer una copia de seguridad

Cuando restableces una base de datos a partir de una copia de seguridad, se descartan automáticamente las políticas de eliminación de filas que se configuraron en la base de datos de origen. Esto evita que Spanner borre potencialmente los datos vencidos tan pronto como se restablezca la copia de seguridad. Por lo tanto, deberás volver a configurar el TTL de forma manual.

Coherencia de los datos

Una copia de seguridad es una instantánea coherente de tus datos en un momento determinado (version_time). La copia de seguridad puede contener filas que podrían ser aptas para la eliminación por TTL, pero para las que aún no se completó el TTL. Del mismo modo, los trabajos de exportación de Dataflow leen la tabla completa en una marca de tiempo fija.

Auditoría

El TTL admite la auditoría de sus eliminaciones a través de flujos de cambios. Los registros de datos de los flujos de cambios que hacen un seguimiento de los cambios en el TTL de una base de datos tienen el campo transaction_tag establecido en RowDeletionPolicy y el campo is_system_transaction establecido en true. Luego, los lectores de transmisiones de cambios pueden filtrar todos los registros de TTL o todos los registros, excepto los de TTL, según su caso de uso. Consulta un ejemplo de cómo usar Beam para filtrar por etiquetas de transacción.

¿Qué sigue?