Vistas materializadas continuas

En este documento, se proporciona una descripción general de las vistas materializadas continuas y sus casos de uso más comunes. Antes de leer esta página, debes familiarizarte con la descripción general de Bigtable.

En Bigtable, una vista materializada continua es un resultado administrado por completo y calculado previamente de una consulta en SQL que se ejecuta de forma continua y que actualiza de manera incremental la vista materializada continua. La consulta en SQL puede incluir agregaciones y transformaciones en la tabla subyacente de Bigtable. El uso de vistas materializadas continuas puede aumentar el rendimiento y la eficiencia.

Los datos de una vista materializada continua incluyen lo siguiente:

  • Valores agregados o transformados que se derivan de los datos de la tabla de origen
  • Valores sin agregar que definen la clave de agrupación

Las vistas materializadas continuas te permiten agregar previamente tus datos a medida que los transfieres. Además, una vista materializada continua tiene un esquema diferente al de su tabla de origen, por lo que presenta los datos de esa tabla con una estructura optimizada para consultas, con los diferentes patrones de búsqueda que las consultas usaron en la tabla de origen.

Las siguientes son características clave de las vistas materializadas continuas en Bigtable:

  • No requieren mantenimiento: Una vista materializada continua se precalcula en segundo plano. Los cambios de datos en la tabla de origen, incluidas las actualizaciones y las eliminaciones, se propagan automáticamente en segundo plano a la vista materializada continua, sin necesidad de que el usuario realice ninguna acción.
  • Patrones de desarrollo de SQL: Las vistas materializadas continuas se basan en GoogleSQL para las consultas de Bigtable, incluidas las funciones, los filtros y las agregaciones de SQL.
  • Sincronización con la recolección de elementos no utilizados: Una vista materializada continua se mantiene sincronizada con las políticas de recolección de elementos no utilizados de su tabla de origen y se actualiza automáticamente a medida que caducan o se borran los datos de la tabla.
  • La latencia de lectura y escritura no se ve afectada: Una vista materializada continua tiene un impacto mínimo en el rendimiento de la tabla de origen cuando los clústeres de la instancia se aprovisionan de forma adecuada o usan el ajuste de escala automático.
  • Coherencia eventual: Las vistas materializadas continuas se calculan en segundo plano. Es posible que las actualizaciones de una vista materializada continua se retrasen, pero los resultados de la vista materializada continua siempre son coherentes a lo largo del tiempo.

La clave de fila, el calificador de columna y los valores de columna que usas para definir una vista materializada continua se tratan como datos de servicio. Por este motivo, no crees una vista materializada continua con clave de fila, calificadores de columna o valores de columna que contengan información sensible. Para obtener información sobre cómo se manejan los datos de servicio, consulta el Aviso de Privacidad deGoogle Cloud .

Puedes crear una vista materializada continua con Google Cloud CLI, el editor de consultas de Bigtable Studio en la consola de Google Cloud o las bibliotecas cliente de Bigtable para Java y Go.

Puedes leer desde una vista materializada continua con lo siguiente:

Para obtener más información, consulta Cómo leer desde una vista materializada continua.

Cuándo usar vistas materializadas continuas

Las vistas materializadas continuas te permiten definir una nueva representación de tus datos de Bigtable con SQL. Una vez creada, una vista materializada continua reestructura de forma continua y automática los datos de la tabla fuente en el formato definido por la consulta en SQL. Luego, en lugar de consultar tu tabla y transformar o agregar los datos después de leerlos, puedes consultar la vista materializada continua.

Las vistas materializadas continuas pueden mejorar el rendimiento de las consultas en los siguientes casos de uso:

  • Agregación previa de datos: Puedes usar una vista materializada continua para agregar los datos entrantes en todas las filas. Esto te permite recuperar rápidamente datos resumidos y agregados, como las métricas de los paneles.
  • Automatización de arquitecturas lambda y kappa: Si tu aplicación requiere una combinación de datos de canalización de transmisión en tiempo real y datos de canalización por lotes que contengan datos históricos, usa vistas materializadas continuas. Estas vistas proporcionan una vista de todas las fuentes de datos que se actualiza con el tiempo para reflejar los cambios en los datos subyacentes, sin necesidad de herramientas adicionales de procesamiento de transmisiones ni trabajos de ETL personalizados.
  • Patrones de acceso secundarios: Las vistas materializadas continuas crean una representación alternativa de tus datos. Esta representación se puede optimizar para consultas con diferentes patrones de búsqueda que los que usas en las consultas en la tabla de origen. Esto convierte las vistas materializadas continuas en una herramienta potente para crear lo que es, en efecto, un índice secundario asíncrono en tus datos. Para obtener más información sobre estos patrones, consulta Crea un índice secundario asíncrono.

Para comparar las vistas materializadas continuas con otros tipos de vistas de Bigtable, consulta Tablas y vistas.

Cuándo usar contadores

Otra forma de agregar previamente tus datos es crear contadores distribuidos con celdas de agregación.

Las escrituras en celdas agregadas se pueden leer de inmediato desde el clúster en el que se escriben. Las vistas materializadas continuas se procesan después de que se escriben los datos y, finalmente, se vuelven coherentes con la tabla de origen.

Usa contadores en lugar de vistas materializadas continuas para lo siguiente:

  • Agregaciones que no requieren filtros y no necesitan abarcar varias filas
  • Si necesitas leer de inmediato tus escrituras desde el clúster en el que se escribieron

Usa vistas materializadas continuas cuando quieras hacer lo siguiente:

  • Genera una clave diferente para las consultas en tus agregaciones
  • Cómo ver los cambios en la tabla base reflejados en tus agregaciones
  • Cómo combinar datos automáticamente en varias filas

Usa una combinación de contadores y vistas materializadas continuas para casos de uso como los siguientes:

  • Captura métricas nuevas en una celda agregada, pero conserva los resúmenes históricos de esas métricas.
  • Combina métricas en una vista materializada continua

Aprovisionamiento y rendimiento de recursos

El procesamiento continuo de las vistas materializadas continuas se realiza como un trabajo en segundo plano de baja prioridad. Como resultado, tiene un impacto mínimo en el rendimiento de la aplicación y en la latencia de lectura y escritura en la tabla de origen, siempre que tus clústeres tengan el tamaño adecuado.

Como práctica recomendada para asegurarte de que los datos de la vista materializada continua se mantengan actualizados, habilita el ajuste de escala automático para los clústeres de la instancia que contiene tu vista materializada continua. El ajuste de escala automático agrega automáticamente la cantidad suficiente de nodos para controlar la sobrecarga de procesamiento y, luego, los quita cuando ya no son necesarios. Esto ayuda a garantizar que haya suficiente capacidad de procesamiento disponible durante la ejecución de la consulta en SQL que se ejecuta de forma continua. El ajuste de escala automático también puede garantizar que tengas suficientes nodos para satisfacer las necesidades de almacenamiento de tus vistas materializadas continuas.

Las vistas materializadas continuas se incluyen en el límite de 1,000 tablas por instancia.

Cómo crear vistas materializadas continuas en tablas existentes

Cuando creas una vista materializada continua para una tabla existente, Bigtable inicia un proceso único que completa la vista con los datos de la tabla existente. El tiempo que tarda esta población inicial depende del tamaño de la tabla y la complejidad de la consulta. Durante este período, la vista no está disponible para realizar consultas. Esta propagación inicial de datos se ejecuta como un trabajo en segundo plano de baja prioridad para minimizar el efecto en el rendimiento del clúster. En el caso de las tablas grandes, puedes agregar temporalmente más nodos a tu clúster para acelerar la creación de vistas.

Por ejemplo, supongamos que tu tabla de origen contiene filas con claves que siguen el patrón advertiser_id#region#ad_id y una familia de columnas, data, que incluye un calificador de columna spend_usd con datos numéricos que representan la inversión publicitaria:

Clave de fila data:spend_usd
adv1#us-east#ad1 100
adv1#us-west#ad2 150
adv2#us-east#ad3 200

Si usas la siguiente consulta para definir una vista materializada continua de esta tabla, la propagación inicial de 1 TB de datos se completará en aproximadamente tres horas en un clúster de 175 nodos.

SELECT
          SPLIT(_key, "#")[SAFE_OFFSET(0)] AS advertiser_id,
          count(*) AS count,
          sum(cast(cast(data['spend_usd'] as string) as int64)) as sum_spend
        FROM `$0`
        GROUP BY advertiser_id

Dado que Bigtable se ajusta de forma lineal, un clúster de 175 nodos procesa 2 TB de datos en aproximadamente seis horas y 10 TB en aproximadamente 30 horas, suponiendo que los datos tengan una forma similar. Para reducir el tiempo necesario para la población inicial, puedes agregar más nodos a tu clúster de forma temporal o, si usas el ajuste de escala automático, aumentar el recuento máximo de nodos de forma temporal.

Almacenamiento

Para cada vista materializada continua, Bigtable almacena lo siguiente:

  • Los datos de la vista materializada continua
  • Almacenamiento intermedio

Al igual que cualquier tabla de Bigtable, una vista materializada continua existe en todos los clústeres de la instancia que la contiene. Los clústeres de tu instancia deben tener suficientes nodos para almacenar la tabla de origen y las vistas materializadas continuas basadas en la tabla. El ajuste de escala automático permite que tus clústeres aumenten o disminuyan su tamaño a medida que cambian los requisitos de almacenamiento.

Una vista materializada continua debe crearse en la misma instancia que la tabla de origen, aunque el almacenamiento de la vista materializada continua sea distinto del de la tabla de origen.

Almacenamiento de vistas materializadas continuas

Una vista materializada continua contiene datos que resultan de la consulta en SQL en la que se basa la vista materializada continua. Esto significa que contiene valores agregados definidos por cláusulas de agregación en la consulta en SQL y valores sin agregar que definen la clave de agrupación.

Almacenamiento intermedio

Para admitir la sincronización de una vista materializada continua con su tabla de origen, Bigtable usa almacenamiento intermedio para almacenar copias de los datos que necesita para actualizar de forma incremental la vista materializada continua.

La cantidad de datos en el almacenamiento intermedio es aproximadamente equivalente a la cantidad de datos que se analizan en la tabla de origen para generar el resultado de la consulta SQL que define la vista materializada continua. Por ejemplo, si tu consulta agrega datos en toda la tabla, Bigtable mantiene el equivalente de toda la tabla en el almacenamiento intermedio. Una vista materializada continua basada en una consulta de rangos o columnas de clave de fila específicos solo conserva esas filas o columnas en el almacenamiento intermedio.

El almacenamiento intermedio persiste durante la vida útil de la vista materializada continua para admitir de manera eficiente las actualizaciones incrementales de la vista y propagar las eliminaciones de la tabla de origen a la vista materializada continua. No puedes leer los datos en el almacenamiento intermedio. Para obtener estadísticas sobre el uso del almacenamiento intermedio, consulta Métricas de vistas materializadas continuas.

Replicación

En las instancias que usan la replicación, las vistas materializadas continuas no se replican de la misma manera que las tablas. En cambio, cada clúster de una instancia procesa la vista materializada continua de forma independiente, con su propia copia de la tabla de origen. Por ejemplo, esto significa que los datos que se escriben en una tabla de origen en el clúster A se replican en la tabla del clúster B y, luego, en la vista materializada continua del clúster B.

Costos

No hay costos por recurso por usar vistas materializadas continuas. Sin embargo, la creación y la sincronización de vistas materializadas continuas requieren procesamiento y almacenamiento, y se te cobra según las tarifas estándar. Cuando crees una vista materializada continua, es posible que observes aumentos en lo siguiente:

  • Almacenamiento: Se te cobra por almacenar los datos en la vista materializada continua y por el almacenamiento intermedio. Para obtener más información, consulta Almacenamiento.
  • Procesamiento: La sincronización continua de la tabla de origen y la vista materializada continua requieren procesamiento de CPU, y es posible que tus clústeres necesiten más nodos para controlar el trabajo en segundo plano adicional.

Al mismo tiempo, es posible que observes una disminución en el procesamiento de la tabla de origen, por ejemplo, cuando ya no realices análisis de rangos de los datos para llevar a cabo cálculos repetidos y otras consultas menos eficientes. También puedes eliminar la necesidad de ejecutar trabajos de canalización, como Dataflow o Spark, para agregar datos de origen y volver a escribirlos en Bigtable.

Para obtener más información sobre los precios, consulta los precios de Bigtable. Para obtener información sobre las métricas que pueden ayudarte a supervisar el uso de tus vistas materializadas continuas, consulta Métricas.

Métricas

Una vista materializada continua informa varias métricas clave a Cloud Logging que puedes usar para supervisar tus vistas materializadas continuas.

Métrica Descripción
materialized_view/max_delay Límite superior de la demora en el procesamiento de la vista materializada continua
materialized_view/storage Cantidad de datos utilizados para el almacenamiento continuo de la vista materializada en bytes
materialized_view/intermediate_storage Cantidad de datos que usa el procesamiento intermedio para la vista materializada continua, expresada en bytes
table/materialized_view_intermediate_storage Cantidad de datos que usa el procesamiento intermedio para las vistas materializadas continuas definidas en esta tabla
materialized_view/user_errors Es la cantidad de errores de los datos del usuario para la vista materializada continua. Los errores del usuario impiden que los datos se propaguen a la vista.
materialized_view/system_errors Cantidad de errores del sistema para la vista materializada continua

También puedes usar muchas métricas de tablas de Bigtable para supervisar una vista materializada continua, con el ID de la vista materializada continua en lugar del ID de la tabla. En particular, las vistas materializadas continuas se incluyen en el desglose de las métricas de CPU, lo que puede ayudarte a comprender su impacto. Las métricas de Bigtable para las solicitudes por segundo, la latencia y el rendimiento se generan cuando lees una vista materializada continua con el método ReadRows de la API de Data. Para obtener más información, consulta Métricas.

Para comenzar a usar Cloud Logging, consulta Descripción general de consultas y registros.

Limitaciones

  • Puedes crear hasta cinco vistas materializadas continuas por tabla.
  • Cuando creas una vista sin un _key especificado, las columnas seleccionadas en la tabla de origen no deben ser NULL. Para obtener más información, consulta Claves de filas definidas por la cláusula GROUP BY.
  • No puedes modificar la consulta en SQL que define una vista materializada continua. Debes borrar la vista materializada continua y crear una nueva con los cambios.
  • No puedes crear una vista materializada continua de otra vista materializada continua ni de una vista lógica.
  • No puedes configurar políticas de recolección de elementos no utilizados para una vista materializada continua. Todas las políticas de retención de datos se rigen por las políticas de recolección de elementos no utilizados de la tabla de origen, y la recolección de elementos no utilizados del origen se refleja automáticamente en la vista materializada continua.

¿Qué sigue?