POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

El problema de COUNT(DISTINCT) en Postgres y la solución con HLL

El reto de COUNT(DISTINCT) en Postgres y la solución con HLL

Publicado el 31/08/2025

El problema COUNT DISTINCT en Postgres y como HLL lo soluciona. Las consultas exactas con COUNT DISTINCT pueden saturar Postgres a gran escala. HyperLogLog HLL ofrece conteos de distintos ultrarrápidos, diminutos y componibles con un error cercano al 1 por ciento, ahorrando tiempo, CPU y almacenamiento. En Q2BSTUDIO, donde diseñamos aplicaciones a medida y pipelines analíticos de alto rendimiento, hemos adoptado HLL para acelerar métricas como usuarios únicos diarios, conservando precisión práctica y reduciendo costes.

Por que falla el enfoque exacto. Imagina una tabla events con miles de millones de filas y la métrica diaria de usuarios activos DAU. COUNT DISTINCT por grupo necesita ordenar o mantener un hash de todas las claves por ventana, lo que con alta cardinalidad provoca desbordes de memoria y ordenaciones en disco. Incluso con índices, el exacto es costoso a gran escala. Si quieres métricas de tendencia rápidas y aceptas un pequeño error de 0.8 a 2 por ciento, el conteo aproximado es el equilibrio ideal.

Que es HyperLogLog HLL. HLL es una estructura probabilística de cardinalidad que estima el numero de elementos distintos de un conjunto. Es de tamaño fijo, se puede fusionar union y es muy veloz. En Postgres se usa mediante la extensión hll. Ventajas clave: almacenamiento diminuto cientos de bytes a pocos KB por grupo, posibilidad de unir esbozos para sumar días en meses sin datos crudos, y un error predecible y configurable.

Regla de precisión. Error aproximado 1.04 dividido por la raíz cuadrada de m, con m igual a 2 elevado a log2m. Con log2m 14 m 16384, el error es cercano a 0.81 por ciento. Es una configuración muy usada por su excelente relación precisión tamaño.

Instalación. Basta con crear la extensión hll en la base de datos. Asegúrate de instalarla en todos los nodos si usas particionado o sharding.

Funciones básicas en Postgres. 1 hll hash para convertir valores a un hash de 64 bits por ejemplo hll hash text o hll hash integer. 2 hll add agg para agregar muchos hash en un mismo esbozo HLL. 3 hll union y hll union agg para fusionar esbozos. 4 hll cardinality para recuperar el conteo estimado de distintos. 5 hll empty log2m regwidth expthresh sparseon para crear un esbozo vacío con parámetros elegidos.

Un conteo aproximado puntual. En una consulta, calcula hll cardinality de hll add agg aplicada a hll hash text del user id. Es un único paso de agregación que evita ordenar y que usa memoria acotada.

Materializa únicos diarios recomendado. Crea una tabla con day como clave primaria y un campo sketch tipo hll. Para cada día agrega hll add agg de los user id del rango y upsertea. Si el día ya existe, usa hll union entre el esbozo almacenado y el nuevo para mantener consistencia. Consultar DAU es inmediato con hll cardinality del sketch. Los totales mensuales surgen al agrupar por mes con hll union agg sin reescanear eventos crudos.

Elección de parámetros precisión vs tamaño. log2m controla la precisión y el tamaño via numero de registros 2 elevado a log2m. Ejemplos prácticos: log2m 14 m 16384 ofrece error cercano a 0.81 por ciento y tamaño típico alrededor de 1.5 KB. log2m 12 m 4096 ofrece error cercano a 1.6 por ciento y tamaño aproximado de 384 a 512 B. Si necesitas inicializar explícitamente, usa hll empty con log2m 14 regwidth 5 expthresh 0 y sparseon 1 para el modo HLL plus plus con mejor rendimiento en cardinalidades pequeñas. Importante todas las uniones de esbozos requieren la misma configuración de parámetros, mantenla estable en tus tablas.

Actualizaciones incrementales. En flujos de eventos en tiempo real, agrupa por día entrante y haz upsert donde sketch se actualiza con hll union. Alternativamente, usa una vista materializada y refresco concurrente en ventanas horarias. Este patrón permite DAU casi en tiempo real con coste fijo.

Exactitud en la practica. Con log2m 14 obtendrás error relativo cercano a 0.8 por ciento. Para conjuntos muy pequeños la variante HLL plus plus usa modo disperso y conteo lineal manteniendo buena exactitud. Puedes validar empíricamente tomando días de muestra y comparando con COUNT DISTINCT exacto para estimar el error real en tu distribución de datos.

Rendimiento y ahorro de almacenamiento. Las tablas de esbozos son muy pequeñas con reducciones de mas del 90 por ciento frente a agregados crudos. Las consultas sobre HLL son ligeras en CPU y evitan grandes ordenaciones y hashes. Las agregaciones por día semana o mes requieren solo hll union agg sin re agregación de eventos. En entornos de data warehouse son comunes aceleraciones de 10x o mas y ahorros de almacenamiento de un orden de magnitud depende de tu esquema y hardware mide siempre.

Errores comunes a evitar. 1 Consistencia no cambies parámetros de HLL una vez en producción. 2 Hashing siempre hashea el identificador estable por ejemplo user id no atributos mutables. 3 Grupos pequeños en conjuntos diminutos el COUNT DISTINCT exacto puede ser suficiente y exacto. 4 Comunicación explica que son métricas aproximadas y documenta el error esperado para alinear a los equipos.

Pre agregación desde Go opcional. Puedes enviar eventos crudos y dejar a Postgres la agregación, o construir esbozos HLL en Go por partición. Si pre agregas, guarda el sketch como bytea o conviértelo a tipo hll en la ingesta. Esto reduce tráfico y CPU en la base pero complica el pipeline, evalúa según tu caso.

Como lo aplicamos en Q2BSTUDIO. En proyectos de analítica y plataformas de datos para clientes que requieren software a medida y aplicaciones a medida, incorporamos HLL en Postgres para métricas de usuarios únicos, funnels y deduplicación a gran escala. Además, integramos estos datos en tableros de servicios inteligencia de negocio con power bi y plataformas de reporting avanzadas. Si te interesa un enfoque integral de dato a dashboard, visita nuestras soluciones de inteligencia de negocio en Power BI y Business Intelligence. Y si necesitas una capa de captura y procesamiento adaptada a tu caso de uso, te ayudamos con software a medida y aplicaciones a medida.

Mas alla del conteo. Nuestro equipo también diseña soluciones con inteligencia artificial ia para empresas y agentes IA, estrategias de ciberseguridad y pentesting, y arquitecturas de servicios cloud aws y azure, conectando datos transaccionales con analítica operativa y analítica avanzada. Esta visión holística nos permite escalar desde un simple DAU hasta modelos de atribución y pronósticos, manteniendo costes bajo control y cumpliendo requisitos de seguridad.

Conclusión. COUNT DISTINCT exacto es perfecto hasta que llega la escala. HLL te permite cambiar un poco de precisión por enormes ganancias en rendimiento y coste, manteniendo consultas simples y métricas componibles. En nuestra experiencia, pasar métricas de únicos a HLL transforma consultas lentas en operaciones ligeras y predecibles, aptas para cuadros de mando en tiempo real. Si te enfrentas al mismo límite, HLL puede salvar tu base de datos y tu presupuesto.

Palabras clave recomendadas para tu estrategia de posicionamiento aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio