dot Descubre las novedades de Redis en Redis Connect España

¡Regístrate ahora!

Soluciones de deduplicación de datos rápidas y seguras

Desordene sus datos para mejorar la participación de los usuarios y agilizar los sistemas con Redis Enterprise.

¿Qué es la deduplicación de datos?

La deduplicación de datos, también conocida como Dedup, ofrece mejores experiencias de usuario y compromiso, así como un procesamiento de datos más eficiente. Aunque la mayoría de la gente piensa que la deduplicación es eliminar varias copias de los mismos datos en una base de datos, en realidad la necesidad de la deduplicación ocurre en muchas situaciones comunes, lo que genera preguntas como:

Casos de uso para la deduplicación

Involucrar a los clientes sin repetir mensajes anteriores

Enviar mensajes a los clientes es una parte esencial de cualquier negocio. Antes de enviar un correo electrónico o texto a un usuario determinado, la deduplicación puede determinar si ese usuario ha visto ese correo electrónico o texto antes. Si es así, el sistema puede enviar a ese usuario un mensaje diferente o decidir no contactar a ese usuario durante un período de tiempo determinado (si es que lo hace).

Illustration of deduped email messages
Illustration of deduped ETL process

Procesamiento ETL

Extraer, transformar y cargar (ETL) es una técnica común para trabajar con grandes conjuntos de datos, como registros de eventos. Por lo general, ETL se usa para recopilar datos de sistemas dispares para que puedan analizarse. Agregar deduplicación a este proceso significa que el sistema no realiza el mismo análisis varias veces en varias copias de los mismos datos.

Asegurarse de que los ID de usuario sean únicos

Cuando un usuario crea una nueva cuenta, es importante que su identificación sea única. Con la deduplicación, es trivial determinar si ya existe una identificación dada.

Illustration of deduped user profiles
Illustration of deduped alerts

Filtrado de alertas duplicadas

Es bueno recibir una alerta de que algo importante ha sucedido en un sistema. Es malo no recibir ninguna alerta, pero es casi tan malo recibir 300 alertas para el mismo evento. O 30 000 alertas. La deduplicación puede sofocar una alerta que ha ocurrido antes, pero la técnica se puede combinar con un temporizador para eliminar los duplicados recientes, lo que permite que el sistema emita una alerta determinada no más de una vez en un período de tiempo determinado.

Filtrado de transacciones para evitar costosos procesos de detección de fraude

La detección de fraude es un excelente caso de uso para el procesamiento de IA/ML. Desafortunadamente, el procesamiento de IA/ML es costoso. La deduplicación puede examinar una transacción y ver si es similar a una transacción aprobada en el pasado. Si la nueva transacción es lo suficientemente similar, el sistema puede aprobar la transacción automáticamente sin incurrir en el coste de detección de fraude. (En este caso de uso, un valor duplicado es algo bueno).

Illustration of deduped transactions

Cómo Redis Enterprise se enfrenta a los desafíos de la deduplicación en tiempo real

Redis Enterprise proporciona dos excelentes tecnologías para la deduplicación: conjuntos y filtros Bloom.

Conjuntos Redis

Deduplication Illustration Redis Sets

Un conjunto Redis almacena cualquier valor dado solo una vez. No importa cuántas veces se agregue un valor a un conjunto, el conjunto contiene solo una copia de ese valor. Los conjuntos de Redis también están optimizados para responder a la pregunta “¿Este valor está en este conjunto?” con extrema velocidad. Los conjuntos también están determinados porque las respuestas a la pregunta son “Definitivamente” y “Definitivamente no”. Tenga en cuenta, sin embargo, que un conjunto puede usar una cantidad sustancial de memoria a medida que aumenta el número de valores únicos en el conjunto.

Probabilístico

Deduplication Illustration Bloom Filter

El módulo RedisBloom proporciona filtros Bloom, un algoritmo probabilístico útil para la deduplicación. A diferencia de un conjunto, un filtro Bloom solo almacena hashes para cada valor, no el valor en sí. Eso significa que un filtro Bloom puede tomar tan solo el 2 % de la memoria que requiere un conjunto. Y, por lo general, son un poco más rápidos que los conjuntos, que en sí mismos son muy rápidos. Pero hay una compensación por esta velocidad y eficiencia de la memoria: un filtro Bloom no es determinante. Las respuestas a la pregunta “¿Hemos visto este valor antes?” son “Definitivamente no” y “Probablemente sí”. En otras palabras, los falsos positivos son posibles con un filtro Bloom.

Historia de éxito del cliente

Una importante empresa de juegos utiliza filtros Bloom en Redis Enterprise para agregar una capa de deduplicación a nivel de eventos a flujos de datos en tiempo real, lo que les permite procesar más de 2 mil millones de eventos por día. En comparación con su implementación original, ahora usan aproximadamente un 90 % menos de memoria y redujeron la latencia de aproximadamente 2 milisegundos a menos de 0,25 milisegundos.

Los 3 desafíos principales que debe abordar una solución de deduplicación

Cómo implementar la deduplicación

Usar conjuntos

Un conjunto contiene como máximo una copia de cualquier valor dado. En otras palabras, podemos agregar el mismo valor a un conjunto un millón de veces (llamar a SADD mascotas perro una y otra vez), pero el valor solo aparecerá una vez en el conjunto. Con un conjunto definido, podemos usar el comando SISMEMBER para saber si un valor dado está en el conjunto. Si creamos un conjunto llamado mascotas y le agregamos los valores perro, gato y loro, el valor perro es un miembro del conjunto, mientras que el valor mono no lo es:

redis> SADD pets dog cat parrot
(integer) 3
redis> SISMEMBER pets dog
(integer) 1
redis> SISMEMBER pets monkey
(integer) 0
redis> SADD pets dog
(integer) 0

Usar filtros Bloom

Así de fácil es configurar y usar un filtro Bloom:

redis> BF.ADD users doug
(integer) 1
redis> BF.ADD users lisa
(integer) 1
redis> BF.EXISTS users doug
(integer) 1
redis> BF.EXISTS users bob
(integer) 0
redis> BF.ADD users lisa
(integer) 0

Queremos asegurarnos de que cada usuario tenga un nombre único. Añadimos doug y lisa al filtro Bloom. (BF.ADD crea el filtro si es necesario). Si alguien intenta crear otra cuenta con el nombre de doug, el filtro Bloom dirá que probablemente ya tengamos un usuario con ese nombre. Por otro lado, si alguien intenta crear una nueva cuenta con el nombre de usuario bob, el filtro Bloom nos dirá que definitivamente no es una identificación que hayamos visto antes, por lo que es seguro crear una nueva cuenta con ese nombre.