Simular TTL a nivel de celda

En Bigtable, las políticas de recolección de elementos no utilizados se definen a nivel de familia de columnas y no se puede especificar una política de recolección de elementos no utilizados a nivel de celda. Sin embargo, puedes simular una política de tiempo de vida (TTL) a nivel de celda cambiando la configuración de la recogida de elementos no utilizados. En esta página se explican algunos enfoques diferentes que puedes usar.

Antes de leer esta página, debes consultar la descripción general de la recogida de elementos no utilizados. Para saber cómo enviar solicitudes de escritura, incluidas las marcas de tiempo, consulta Escrituras de Bigtable.

Caducidad de un segundo

Con este método, puedes configurar la regla de recolección de elementos no utilizados para que los datos caduquen al cabo de un segundo. Cada vez que escribas datos, define la marca de tiempo de la celda con la hora en la que quieras que caduque el valor. Durante la compactación, Bigtable elimina las celdas que tengan una marca de tiempo de al menos un segundo en el pasado. Por ejemplo, si asignas a una celda la marca de tiempo del 30 de abril a las 9:00:00, la celda se eliminará en algún momento después del 30 de abril a las 9:00:01. Este método te permite definir valores de vencimiento diferentes para distintas celdas de la misma familia de columnas.

Ventajas de la caducidad de un segundo

  • La marca de tiempo tiene un significado real: la hora de vencimiento.

Inconvenientes de la caducidad de un segundo

  • Cada aplicación que escriba datos en esta familia de columnas de Bigtable debe configurarse para que siga esta regla. Si olvidas usar una marca de tiempo del servidor predeterminada en una escritura, esos datos caducarán inmediatamente y se eliminarán durante la siguiente compactación.

  • Como las marcas de tiempo no son "reales", no puede usarlas para ningún otro caso práctico, como determinar cuándo se escribió un valor. Como solución alternativa, puede escribir la marca de tiempo real en una columna independiente, pero esto aumentará la cantidad de datos que almacene.

  • No puedes implementar esta estrategia en una familia de columnas que ya tenga datos con marcas de tiempo reales. Si los datos ya tienen marcas de tiempo reales o si escribe por error datos nuevos con marcas de tiempo reales, esos datos se eliminarán durante la siguiente compactación.

  • No puede especificar que varias celdas de una fila y una columna determinadas caduquen al mismo tiempo. Los datos nuevos sobrescribirán los antiguos con la misma marca de tiempo.

  • Como la recogida de elementos no utilizados puede tardar hasta una semana, siempre debe usar filtros al leer los datos.

Vencimiento predeterminado

Supongamos que quiere que la mayoría de sus datos tengan un TTL predeterminado, pero quiere definir valores de vencimiento por celda diferentes para algunos de ellos.

Por ejemplo, puede almacenar eventos de clic de diez clientes en una tabla. La mayoría de los eventos de clic deberían caducar al cabo de 2 días, pero tienes un cliente cuyos eventos de clic deberían caducar al cabo de una hora y otro cliente cuyos eventos de clic deberían caducar al cabo de 3 días.

En este enfoque, crea tu familia de columnas con un límite de edad para la recogida de elementos no utilizados definido como el TTL predeterminado. Si quieres que los datos caduquen antes de lo que se establece de forma predeterminada, define una marca de tiempo anterior al momento en el que se escriben los datos. En el caso de los datos que quieras que caduquen más adelante, define la marca de tiempo para que sea posterior a la hora en la que se escriben los datos.

Ventajas del vencimiento predeterminado

  • Se ha establecido un TTL predeterminado para las escrituras que no tienen un TTL personalizado.

  • Este enfoque se puede aplicar de forma segura a una tabla ya creada.

Inconvenientes de la caducidad predeterminada

  • La marca de tiempo no tiene un significado semántico porque puede ser real o artificial. Esto significa que no puedes usar las marcas de tiempo de las celdas para ningún otro caso práctico, como determinar cuándo se escribió un valor. Como solución alternativa, puedes escribir la marca de tiempo real en una columna independiente, pero esto aumentará la cantidad de datos que almacenes.

  • Puedes escribir por error una marca de tiempo personalizada que coincida con una marca de tiempo real en una columna determinada.

  • Como la recogida de elementos no utilizados es asíncrona, siempre debes usar filtros al leer los datos cuando usas esta estrategia.

Siguientes pasos