¿Qué es ClickHouse?
ClickHouse® es un sistema de gestión de bases de datos SQL orientado a columnas (DBMS) para el procesamiento analítico en línea (OLAP). Está disponible tanto como software de código abierto como en Cloud.
ClickHouse® es un sistema de gestión de bases de datos SQL orientado a columnas y de alto rendimiento para el procesamiento analítico en línea (OLAP). Está disponible tanto como software de código abierto como servicio en la nube.
Puede ejecutar esta consulta en ClickHouse SQL Playground que selecciona y filtra solo unas pocas de las más de 100 columnas existentes y devuelve el resultado en milisegundos:
Como puede ver en la sección de estadísticas del diagrama anterior, la consulta procesó 100 millones de filas en 92 milisegundos, con un rendimiento aproximado de más de 1.000 millones de filas por segundo o algo menos de 7 GB de datos transferidos por segundo.
SGBD orientado a filas
En una base de datos orientada a filas, aunque la consulta anterior solo procesa unas pocas de las columnas existentes, el sistema sigue necesitando cargar desde disco a memoria los datos de otras columnas. Esto se debe a que los datos se almacenan en disco en fragmentos llamados bloques (normalmente de tamaño fijo, por ejemplo, 4 KB u 8 KB). Los bloques son las unidades de datos más pequeñas que se leen del disco a la memoria. Cuando una aplicación o base de datos solicita datos, el subsistema de E/S de disco del sistema operativo lee del disco los bloques necesarios. Incluso si solo se necesita una parte de un bloque, el bloque completo se lee en memoria (esto se debe al diseño del disco y del sistema de archivos):
SGBD orientado a columnas
Como los valores de cada columna se almacenan secuencialmente en disco, uno detrás de otro, no se carga ningún dato innecesario al ejecutar la consulta anterior.
Como el almacenamiento y la transferencia por bloques del disco a la memoria se ajustan al patrón de acceso a los datos de las consultas analíticas, solo se leen del disco las columnas necesarias para una consulta, lo que evita operaciones de E/S innecesarias sobre datos que no se usan. Esto es mucho más rápido que el almacenamiento por filas, donde se leen filas completas (incluidas las columnas irrelevantes):
La analítica, también conocida como OLAP (Procesamiento Analítico en Línea), se refiere a consultas SQL con cálculos complejos (p. ej., agregaciones, procesamiento de cadenas y aritmética) sobre conjuntos de datos masivos.
A diferencia de las consultas transaccionales (u OLTP, Procesamiento de Transacciones en Línea), que leen y escriben solo unas pocas filas por consulta y, por lo tanto, se completan en milisegundos, las consultas analíticas procesan de forma habitual miles de millones y billones de filas.
En muchos casos de uso, las consultas analíticas deben devolver resultados “en tiempo real”, es decir, en menos de un segundo.
Ese nivel de rendimiento solo puede lograrse con la “orientación” adecuada de los datos.
Las bases de datos almacenan los datos por filas o por columnas.
En una base de datos orientada a filas, las filas consecutivas de una tabla se almacenan secuencialmente una tras otra. Esta disposición permite recuperar filas con rapidez, ya que los valores de las columnas de cada fila se almacenan juntos.
ClickHouse es una base de datos orientada a columnas. En estos sistemas, las tablas se almacenan como una colección de columnas; es decir, los valores de cada columna se almacenan secuencialmente uno tras otro. Esta disposición dificulta recuperar filas individuales (ya que ahora hay huecos entre los valores de una fila), pero las operaciones sobre columnas, como los filtros o la agregación, son mucho más rápidas que en una base de datos orientada a filas.
La diferencia se entiende mejor con una consulta de ejemplo ejecutada sobre 100 millones de filas de datos anonimizados de analítica web del mundo real:
ClickHouse utiliza un esquema de replicación asíncrona multi-master para garantizar que los datos se almacenen de forma redundante en varios nodos. Una vez que se escriben en cualquier réplica disponible, el resto de las réplicas obtienen su copia en segundo plano. El sistema mantiene datos idénticos en las distintas réplicas. La recuperación tras la mayoría de los fallos se realiza automáticamente o, en casos complejos, de forma semiautomática.
ClickHouse administra las cuentas de usuario mediante consultas SQL y permite configurar el control de acceso basado en roles, de forma similar a lo que se encuentra en el estándar ANSI SQL y en los sistemas populares de gestión de bases de datos relacionales.
ClickHouse admite un lenguaje declarativo de consultas basado en SQL que, en muchos casos, es idéntico al estándar ANSI SQL. Las cláusulas de consulta admitidas incluyen GROUP BY, ORDER BY, subconsultas en FROM, la cláusula JOIN, el operador IN, funciones de ventana y subconsultas escalares.
ClickHouse ofrece formas de sacrificar exactitud a cambio de rendimiento. Por ejemplo, algunas de sus funciones de agregación calculan de forma aproximada el recuento de valores distintos, la mediana y los cuantiles. Además, las consultas pueden ejecutarse sobre una muestra de los datos para obtener rápidamente un resultado aproximado. Por último, las agregaciones pueden ejecutarse con un número limitado de claves en lugar de hacerlo para todas ellas. Según el grado de sesgo en la distribución de las claves, esto puede proporcionar un resultado razonablemente preciso usando muchos menos recursos que un cálculo exacto.
ClickHouse elige el algoritmo de join de forma adaptativa: empieza con hash joins rápidos y recurre a merge joins si hay más de una tabla grande.
ClickHouse es ampliamente conocido por ofrecer un rendimiento de consulta extremadamente rápido.
Para saber por qué ClickHouse es tan rápido, consulta la guía ¿Por qué ClickHouse es tan rápido?.
Última modificación el 10 de junio de 2026