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 en 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 mantener solo el valor más reciente, te recomendamos que uses un delete-then-write para limitar las columnas de tu tabla a solo una 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 pedido se 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 recreará.
  • TIMESTAMP: Es la nueva marca de tiempo.
  • VALUE: Es 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 cualquier valor inferior que el tiempo actual en milisegundos y que también usen una recolección de elementos no utilizados basada en la antigüedad política, es posible que tu celda se borre la próxima vez que se lleve a cabo la recolección de elementos no utilizados.

¿Qué sigue?