Mantener solo el valor más reciente

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

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

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

Eliminar y escribir

Para conservar solo un valor en una columna, puede enviar una solicitud que elimine la columna y, a continuación, la vuelva a crear con un nuevo valor y una nueva marca de tiempo en una acción atómica.

En el siguiente ejemplo de pseudocódigo de Java se muestra cómo funcionaría. El orden es importante: la eliminación debe producirse 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);

Proporciona lo siguiente:

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

Marca de tiempo cero

Antes, recomendábamos enviar siempre las escrituras con una marca de tiempo de 0. Puedes seguir usando ese método, pero, como las marcas de tiempo válidas son útiles, te recomendamos que utilices el método de eliminar y, después, escribir.

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

Siguientes pasos