Saltar al contenido principal
Después de ver cómo consultar nuestro conjunto de datos de estadísticas de Wikipedia, centrémonos ahora en optimizar su eficiencia de almacenamiento en ClickHouse. En esta sección se muestran técnicas prácticas para reducir las necesidades de almacenamiento sin afectar al rendimiento de las consultas.

Optimización de tipos

El enfoque general para optimizar la eficiencia del almacenamiento es usar tipos de datos óptimos. Tomemos las columnas project y subproject. Estas columnas son de tipo String, pero tienen una cantidad relativamente reducida de valores únicos:
Esto significa que podemos usar el tipo de datos LowCardinality(), que utiliza una codificación por diccionario. Esto hace que ClickHouse almacene el ID del valor interno en lugar de la cadena original, lo que a su vez ahorra mucho espacio:
También hemos usado un tipo UInt64 para la columna hits, que ocupa 8 bytes, pero tiene un valor máximo relativamente pequeño:
Dado este valor, podemos usar UInt32 en su lugar, que ocupa solo 4 bytes y permite almacenar hasta ~4 mil millones como valor máximo:
Esto reducirá al menos a la mitad el tamaño de esta columna en memoria. Ten en cuenta que el tamaño en disco no cambiará debido a la compresión. Pero ten cuidado: ¡elige tipos de datos que no sean demasiado pequeños!

Codecs especializados

Cuando trabajamos con datos secuenciales, como las series temporales, podemos mejorar aún más la eficiencia del almacenamiento usando codecs especiales. La idea general es almacenar las diferencias entre valores en lugar de los valores absolutos, lo que requiere mucho menos espacio cuando se trabaja con datos que cambian lentamente:
Hemos usado el códec Delta para la columna time, que resulta muy adecuado para datos de series temporales. La clave de ordenación adecuada también puede ahorrar espacio en disco. Como normalmente queremos filtrar por una ruta, añadiremos path a la clave de ordenación. Esto requiere recrear la tabla. A continuación, podemos ver el comando CREATE para nuestra tabla inicial y la tabla optimizada:
Y veamos cuánto espacio ocupan los datos en cada tabla:
La tabla optimizada ocupa, en su forma comprimida, poco menos de una cuarta parte del espacio.
Última modificación el 10 de junio de 2026