Recolección de elementos no utilizados

En esta página, se describe cómo funciona la recolección de elementos no utilizados en Cloud Bigtable y se analizan los siguientes temas:

  • Tipos de recolección de elementos no utilizados
  • Configuración predeterminada de recolección de elementos no utilizados
  • Cuándo se quitan los datos
  • Cambios en las políticas de recolección de elementos no utilizados para tablas replicadas

Descripción general de la recolección de elementos no utilizados

La recolección de elementos no utilizados es el proceso automático y continuo que consiste en quitar datos caducados y obsoletos de las tablas de Cloud Bigtable. Una política de recolección de elementos no utilizados es un conjunto de reglas que creas y que indican cuándo los datos de una familia de columnas específica ya no son necesarios.

La recolección de elementos no utilizados es un proceso en segundo plano, integrado y asíncrono. Puede tardar hasta una semana quitar los datos aptos para la recolección de elementos no utilizados. La recolección de elementos no utilizados se realiza en un horario fijo que no varía según la cantidad de datos que se deben quitar. Hasta que los datos se quiten, aparecerán en los resultados de lectura. Puedes filtrar tus lecturas para excluir estos datos.

Los beneficios de las políticas de recolección de elementos no utilizados incluyen lo siguiente:

  • Minimizar el tamaño de las filas: siempre querrás evitar que las filas crezcan de forma indefinida. Las filas grandes afectan el rendimiento de forma negativa. Idealmente, nunca debes dejar que una fila supere el tamaño de 100 MB, y el límite es de 256 MB. Si no necesitas conservar datos antiguos o versiones antiguas de tus datos actuales, usar la recolección de elementos no utilizados puede ayudarte a minimizar el tamaño de cada fila.
  • Mantener los costos bajos: la recolección de elementos no utilizados garantiza que no pagues por almacenar datos que ya no se requieren ni se usan. Se te cobra el almacenamiento de datos obsoletos o caducados hasta que se realiza la compactación y se quitan los datos recopilados de elementos no utilizados. Este proceso suele durar unos días, pero puede llevar hasta una semana.

Puedes establecer políticas de recolección de elementos no utilizados de manera programática o con la herramienta cbt. Las políticas de recolección de elementos no utilizados se establecen a nivel de la familia de columnas.

Cada familia de columnas en una tabla tiene su propia política de recolección de elementos no utilizados. El proceso de recolección de elementos no utilizados busca la política actual de recolección de elementos no utilizados para cada familia de columnas, y luego quita los datos de acuerdo con las reglas de la política.

Marcas de tiempo

En Cloud Bigtable, la intersección de una fila y una columna puede tener varias celdas, que son versiones diferentes del valor en esa intersección. Cada celda tiene una marca de tiempo. La propiedad de marca de tiempo de una celda puede ser una marca de tiempo “real”, que refleja el tiempo real en que se escribe el valor de la celda, o puede ser una marca de tiempo “artificial”. Las marcas de tiempo artificiales incluyen números secuenciales, ceros o valores con formato de marca de tiempo que no son la hora real en que se escribió la celda. Antes de usar marcas de tiempo artificiales, revisa los casos prácticos de las marcas de tiempo artificiales, incluidos los riesgos de usarlas:

Tipos de recolección de elementos no utilizados

En esta sección, se describen los tipos de recolección de elementos no utilizados disponibles en Cloud Bigtable. Las muestras de código para cada tipo de recolección de elementos no utilizados se encuentran en la configuración de recolección de elementos no utilizados.

Valores vencidos (basados en la antigüedad)

Puedes establecer una regla de recolección de elementos no utilizados en función de la marca de tiempo de cada celda. Por ejemplo, es posible que no desees mantener ninguna celda con marcas de tiempo que sean de más de 30 días antes de la fecha y hora actuales. Con este tipo de regla de recolección de elementos no utilizados, estableces el tiempo de actividad (TTL) para los datos. Cloud Bigtable examina cada familia de columnas durante la recolección de elementos no utilizados y quita las celdas que caducaron.

Número de versiones

Puedes establecer una regla de recolección de elementos no utilizados que indique de forma explícita el número máximo de celdas que se mantendrán para todas las columnas de una familia de columnas.

Por ejemplo, si deseas conservar solo el nombre de usuario y la dirección de correo electrónico más recientes de un cliente, puedes crear una familia de columnas que contenga esas dos columnas y establecer el número máximo de valores en 1 para esa familia de columnas.

En otro caso, es posible que desees mantener las últimas 5 versiones del hash de contraseña de un usuario para asegurarte de que no vuelvan a utilizar la contraseña. En este caso, deberías establecer el número máximo de versiones para la familia de columnas que contiene la columna de contraseña en 5. Cuando Cloud Bigtable analiza la familia de columnas durante la recolección de elementos no utilizados, si se escribió una sexta celda en la columna de contraseña, la celda más antigua se recolecta para mantener el número de versiones en 5.

Combinaciones de caducidad y reglas de número de versión

Hay dos tipos de políticas de recolección de elementos no utilizados disponibles para combinar estos tipos de reglas de recolección de elementos no utilizados: intersección y unión.

Intersección

Una política de recolección de elementos no utilizados de intersección quitará todos los datos que coincidan con todo un conjunto de reglas dadas. Por ejemplo, es posible que desees quitar los perfiles de más de 30 días, pero que siempre mantengas al menos uno para cada usuario. En este caso, tu política de intersección de la familia de columnas que contiene la columna del perfil consistirá de una regla para un valor vencido y una regla destinada al número de versiones.

Unión

Una política de recolección de elementos no utilizados de unión quitará todos los datos que coincidan con cualquier regla de un conjunto de reglas dadas. Por ejemplo, es posible que desees asegurarte de conservar un máximo de 2 registros de página vista por usuario, pero solo si tienen menos de 30 días. En este caso, tu política de unión se establece para un valor vencido o una cantidad de versiones.

Configuración predeterminada para la recolección de elementos no utilizados

No hay un TTL predeterminado para una familia de columnas. El número predeterminado de versiones para una columna depende de cómo crees la familia de columnas en la que se encuentra la columna, tal como se explica en las siguientes secciones.

Política de HBase

Si creas la familia de columnas con el cliente de HBase para Java, con la shell de HBase, o con cualquier otra herramienta que utiliza el cliente HBase para Java, Cloud Bigtable retiene solo la versión más reciente de cada valor en la familia de columnas, a menos que cambies la regla. Esta configuración predeterminada es coherente con HBase.

Todas las demás bibliotecas cliente o herramientas

Si creas la familia de columnas con cualquier otra biblioteca cliente o herramienta, Cloud Bigtable retiene una cantidad infinita de versiones de cada valor. Esto incluye las familias de columnas creadas con gcloud y la herramienta cbt. Debes cambiar la política de recolección de elementos no utilizados para la familia de columnas si deseas limitar el número de versiones.

Cuándo se quitan los datos

La recolección de elementos no utilizados es un proceso continuo en el que Cloud Bigtable comprueba las reglas de cada familia de columnas y quita los datos caducados y obsoletos correspondientes. En general, la eliminación real de los datos puede tomar hasta una semana a partir del momento en que estos coinciden con los criterios de las reglas. No puedes cambiar el tiempo de la recolección de elementos no utilizados.

Debido a que la recolección de datos puede llevar hasta una semana, nunca debes confiar únicamente en las políticas de recolección de elementos no utilizados para asegurarte de que las solicitudes de lectura muestren los datos deseados. Siempre aplica un filtro a tus solicitudes de lectura que excluya los mismos valores que tus reglas de recolección de elementos no utilizados. Puedes filtrar limitando el número de celdas por columna o especificando un rango de marca de tiempo.

Por ejemplo, supongamos que una regla de recolección de elementos no utilizados de una familia de columnas está configurada para mantener solo las 5 versiones más recientes de un perfil y las 5 versiones ya están almacenadas. Después de que se escribe una nueva versión del perfil, la celda más antigua puede demorar hasta una semana en ser recolectada. Por lo tanto, para evitar leer el sexto valor, siempre debes filtrar todo, excepto las 5 versiones más recientes.

Se te cobra el almacenamiento de los datos caducados hasta que se realiza la compactación y se quitan los datos recolectados.

La recolección de elementos no utilizados es retroactiva: cuando se establece una nueva política de recolección de elementos no utilizados, en los próximos días se aplicará a todos los datos de la tabla. Si la nueva política es más restrictiva que la política anterior, los datos antiguos se quitarán a medida que se realice el trabajo en segundo plano. Esto afecta a los datos que se escribieron antes del cambio de la política.

Si deseas asegurarte de que los datos se estén recolectando, puedes consultar tu tabla y comparar los datos con los resultados esperados. También puedes supervisar el tamaño de la tabla en Google Cloud Platform Console. Una tabla cuyo tamaño nunca disminuye puede reflejar una política de recolección de elementos no utilizados que no funciona como se espera. Sin embargo, ten en cuenta que la recolección de elementos no utilizados se ejecuta con retraso.

Cambios en las políticas de recolección de elementos no utilizados para tablas replicadas

Cloud Bigtable te permite modificar o quitar una política para una familia de columnas en cualquier momento si la tabla está en una instancia de un único clúster. Por otro lado, algunas restricciones se aplican a las tablas en instancias replicadas, para proteger tus datos.

Puedes modificar el número máximo de versiones de una familia de columnas en una tabla replicada. Sin embargo, si reduces el número de versiones de una familia de columnas, podría tardar hasta una semana que todos los clústeres replicados reflejen el nuevo número más bajo. Por lo tanto, siempre debes usar filtros cuando lees los datos.

Cloud Bigtable no te permitirá aumentar el TTL de una familia de columnas en una tabla replicada. Para entender por qué, considera un caso en el que deseas cambiar el TTL de una familia de columnas de 30 a 60 días. La recolección de elementos no utilizados basada en la antigüedad puede ejecutarse por separado en cada clúster. Como resultado, cuando cambias la política, es posible que la recolección de elementos no utilizados haya quitado un valor de 31 días de antigüedad en una copia de una tabla, pero no en otra. Cambiar la política de recolección de elementos no utilizados en esta situación puede dejar las copias sin sincronizar durante casi un mes.

Por el mismo motivo, Cloud Bigtable no te permitirá quitar una política de recolección de elementos no utilizados basada en la antigüedad para una familia de columnas en una tabla replicada.

Qué sigue

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Bigtable