SELECT sobre la tabla de destino son rápidas y ligeras. Las vistas incrementales admiten todas las funciones de agregación y escalan bien, incluso hasta petabytes de datos, porque cada consulta opera sobre un subconjunto pequeño y reciente del conjunto de datos que se está insertando.
Las vistas materializadas actualizables, en cambio, se actualizan según una programación. Estas vistas vuelven a ejecutar periódicamente su consulta completa y sobrescriben el resultado en la tabla de destino. Esto es similar a las vistas materializadas de bases de datos OLTP tradicionales como Postgres.
La elección entre vistas materializadas incrementales y actualizables depende en gran medida de la naturaleza de la consulta, de la frecuencia con la que cambian los datos y de si las actualizaciones de la vista deben reflejar cada fila a medida que se inserta o si una actualización periódica es aceptable. Comprender estas diferencias es clave para diseñar vistas materializadas escalables y de alto rendimiento en ClickHouse.
Cuándo usar vistas materializadas incrementales
- Necesite resultados de consulta en tiempo real que se actualicen con cada inserción.
- Agregue o filtre grandes volúmenes de datos con frecuencia.
- Sus consultas impliquen transformaciones o agregaciones sencillas sobre una sola tabla.
Cuándo usar vistas materializadas actualizables
Resumen
- Necesite resultados de consultas en caché disponibles al instante y pueda tolerar pequeños retrasos en la actualización.
- Necesite el top N de un conjunto de resultados de una consulta.
- El tamaño del conjunto de resultados no crezca sin límite con el tiempo. De lo contrario, el rendimiento de la vista de destino se degradará.
- Esté realizando JOIN complejos o desnormalización con varias tablas, lo que requiera actualizaciones cada vez que cambie cualquier tabla de origen.
- Esté creando flujos de trabajo por lotes, tareas de desnormalización o dependencias entre vistas similares a los DAG de DBT.
Modo APPEND vs REPLACE
APPEND y REPLACE. Estos modos definen cómo se escribe el resultado de la consulta de la vista cuando esta se actualiza.
REPLACE es el comportamiento predeterminado. Cada vez que se actualiza la vista, el contenido anterior de la tabla de destino se sobrescribe por completo con el resultado más reciente de la consulta. Esto resulta adecuado para casos de uso en los que la vista debe reflejar siempre el estado más reciente, como el almacenamiento en caché de un conjunto de resultados.
APPEND, en cambio, permite añadir nuevas filas al final de la tabla de destino en lugar de reemplazar su contenido. Esto abre casos de uso adicionales, como la captura de instantáneas periódicas. APPEND es especialmente útil cuando cada actualización representa un momento concreto en el tiempo o cuando se desea acumular resultados históricos.
Elija el modo APPEND cuando:
- Quiera conservar un historial de actualizaciones anteriores.
- Esté generando instantáneas o informes periódicos.
- Necesite recopilar de forma incremental resultados actualizados a lo largo del tiempo.
REPLACE cuando:
- Solo necesite el resultado más reciente.
- Los datos obsoletos deban descartarse por completo.
- La vista represente un estado actual o una referencia.
APPEND al crear una arquitectura de medallón.