Count-Min Sketch: contar millones de eventos con kilobytes de RAM
Un firewall que ve millones de paquetes por segundo no puede abrir una entrada en una tabla hash por cada IP distinta que procesa: se queda sin memoria en minutos. Necesita contar sin guardar cada evento, y ahí entra el count-min sketch , una estructura de datos probabilística que estima cuántas veces ocurrió algo usando apenas unos kilobytes. El count-min sketch resuelve ese problema con una…
El count-min sketch es una estructura de datos probabilística que permite estimar cuántas veces ocurrió un evento sin guardar cada evento individual. Es útil cuando se trata de flujos de datos muy grandes que no caben en la memoria. En lugar de almacenar un contador para cada elemento distinto, el count-min sketch utiliza una matriz pequeña y varias funciones hash para mantener un registro de las frecuencias de manera eficiente.
El tamaño del sketch depende solo del error que se tolera, no del número de claves distintas. Graham Cormode y S. Muthukrishnan introdujeron el algoritmo en 2005. Para crear un count-min sketch, se define una matriz con un ancho determinado por el error deseado (ε) y una profundidad basada en la probabilidad de error (δ). Luego, se guardan varias funciones hash que mapean cada elemento a celdas de la matriz.
Para incrementar el conteo de un elemento, se aplica cada función hash a la entrada y se suma 1 en las celdas correspondientes. Para obtener la estimación de frecuencia, se considera el valor mínimo encontrado en las celdas correspondientes. Este enfoque reduce el impacto de las colisiones de funciones hash. Algunos de los usos más comunes incluyen la detección de heavy hitters en redes y el conteo de términos en flujos de texto como los de Twitter.
Es más eficiente que filtros de Bloom o HyperLogLog cuando se necesita conocer la frecuencia de aparición de elementos específicos.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.