Video
Learn more
Desordene sus datos para mejorar la participación de los usuarios y agilizar los sistemas con Redis Enterprise.
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:
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).
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.
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.
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.
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).
Redis Enterprise proporciona dos excelentes tecnologías para la deduplicación: conjuntos y filtros Bloom.
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.
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.
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.
Para tener un compromiso de usuario de primera clase, sus soluciones deben anticiparse a las necesidades de un usuario y comprender sus experiencias anteriores. Una gran solución de deduplicación le permite asegurarse de que cada interacción del usuario sea única, relevante para los intereses del usuario y basada en el historial del usuario.
Una solución de deduplicación de alto rendimiento debería ser capaz de escalar para manejar conjuntos de datos masivos con alto rendimiento y escalabilidad lineal. Los conjuntos Redis y el módulo RedisBloom hacen exactamente eso. Independientemente de la solución que elija, ambas ofrecen un rendimiento ultrarrápido en todos los tamaños de conjuntos de datos, incluidos conjuntos multinube y distribuidos geográficamente.
Una solución de deduplicación eficiente le da la oportunidad de evitar el procesamiento redundante, asegurándose de que no se manejen datos más de una vez. En algunos casos, la deduplicación se puede utilizar para evitar el procesamiento por completo. Y el uso de la deduplicación para limitar o eliminar alertas facilita a los operadores responder adecuadamente a los eventos del sistema al tiempo que evitan la fatiga de las alertas.
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
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.