Mantén solo el valor más reciente

En esta página, se describe una estrategia que te permite mantener solo el valor más reciente de una columna en una tabla de Bigtable.

Todas las bibliotecas cliente de Cloud Bigtable te permiten usar filtros para leer el valor más reciente en una fila, o celda y columna determinadas. Sin embargo, en algunos casos, es posible que nunca necesites leer versiones anteriores de tus datos. Puedes usar una política de recolección de elementos no utilizados basada en la versión que especifique que solo se debe conservar una celda en una columna, pero como la recolección de elementos no utilizados puede tardar hasta una semana en realizarse, en la práctica, tu tabla podría contener datos más antiguos que nunca planeas leer.

Para conservar solo el valor más reciente, te recomendamos que uses un enfoque de borrar y, luego, escribir para limitar las columnas de tu tabla a una sola celda.

Borrar y, luego, escribir

Para retener solo un valor en una columna, puedes enviar una solicitud que borre la columna y, luego, la vuelva a crear con un valor y una marca de tiempo nuevos en una acción atómica.

En el siguiente ejemplo de pseudocódigo de Java, se muestra cómo funcionaría esto. El orden es importante: la eliminación debe ocurrir antes de la escritura.

RowMutation mutation = RowMutation.create(TABLE, ROW_KEY)
                .deleteCells(COLUMN_FAMILY, COLUMN_QUALIFIER, Range.TimestampRange.unbounded())
                .setCell((COLUMN_FAMILY, COLUMN_QUALIFIER, TIMESTAMP, VALUE);
dataClient.mutateRow(mutation);

Proporcione lo siguiente:

  • TABLE: el ID de la tabla
  • COLUMN_FAMILY: Es la familia de columnas que contiene la columna.
  • COLUMN_QUALIFIER: Es el calificador de columna que se borrará y volverá a crear.
  • TIMESTAMP: Es la nueva marca de tiempo.
  • VALUE: El valor nuevo de la columna

Marca de tiempo de cero

Anteriormente, recomendábamos una estrategia de enviar siempre operaciones de escritura con una marca de tiempo de 0. Puedes seguir usando ese enfoque, pero, como las marcas de tiempo válidas son útiles, te recomendamos que uses el enfoque de borrar y, luego, escribir.

Si estableces la marca de tiempo de una celda en 0 o en cualquier valor inferior a la hora actual en milisegundos y también usas una política de recolección de elementos no utilizados basada en la antigüedad, es posible que se borre la celda la próxima vez que se realice la recolección de elementos no utilizados.

¿Qué sigue?