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 versión basada en política de recolección de elementos no utilizados que especifica que solo se debe mantener una celda por columna, pero como puede tardar hasta un semana para que ocurra la recolección de elementos no utilizados, 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 y la vuelve a crear con un valor y una marca de tiempo nuevos en una acción atómica.

En el siguiente ejemplo de pseudocódigo 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 recreará.
  • TIMESTAMP: Es la marca de tiempo nueva.
  • VALUE: Es el valor nuevo de la columna.

Marca de tiempo de cero

Anteriormente, recomendamos una estrategia de enviar siempre escrituras con una marca de tiempo de 0. Puedes seguir usando ese enfoque, pero como las marcas de tiempo válidas son útiles, recomendamos 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 realice la recolección de elementos no utilizados.

¿Qué sigue?