El alias clickhouse
Esta idea de diseño no es nueva. La historia se remonta a la época de los lenguajes de programación "APL": A+, "j", "k" y "q". La programación de matrices se utiliza ampliamente en el procesamiento de datos científicos. En las bases de datos relacionales también se aplican sistemas de vectorización.
Hay dos formas de acelerar el procesamiento de consultas: ejecución de consultas vectorizadas y generación de código en tiempo de ejecución. La generación de código se realiza para cada tipo de consulta, eliminando toda dirección indirecta y procesamiento de reenvío dinámico. Estos métodos no son mejores que otros. La generación de código en tiempo de ejecución es mejor cuando se ejecutan varias operaciones juntas, aprovechando al máximo las unidades de ejecución de la CPU y las canalizaciones.
No es práctico realizar consultas cuantificadas porque implica vectores temporales que deben escribirse en la memoria caché y volver a leerse. Esto puede ser un problema si los datos temporales no caben en la caché L2. Sin embargo, es más fácil utilizar las capacidades SIMD de la CPU para realizar consultas cuantificadas. Un artículo de investigación sugiere que es mejor combinar ambos enfoques. ClickHouse utiliza principalmente ejecución de consultas vectorizadas y soporte de generación de código de tiempo de ejecución limitado (solo se compila el bucle interno GROUP BY de la primera etapa).