wso2 - CEP cómo detectar e informar duplicados en una secuencia?
esper siddhi (2)
Esper, por ejemplo, utilizando el estándar propuesto de patrón de reconocimiento de coincidencia SQL:
select * from AuthStream.win:time(10 sec)
match_recognize (
partition by username
measures A.username as a_name
pattern (A B)
define
B as B.ipaddress != A.ipaddress
)
¿Hay alguna manera de detectar e informar duplicados en una transmisión?
ejemplo: una secuencia de datos de inicio de sesión de usuario que contiene tuplas con nombre de usuario y dirección IP. El objetivo es detectar el inicio de sesión del mismo usuario desde diferentes direcciones IP en los últimos 10 segundos.
He echado un vistazo a siddhi (wso2) y los lenguajes de consulta de esper, pero no sé cómo lograrlo.
En WSO2 CEP (Siddhi), puedes lograrlo usando ''Patrones''
Una consulta de ejemplo:
from every a1 = authStream
-> b1 = authStream[username == a1.username and ipAddress != a1.ipAddress]
within 10000 insert into alertStream a1.username as detectedUserName
En la consulta anterior, a1 y b1 se refieren a 2 eventos de authStream y vamos a buscar el patrón donde sus nombres de usuario son iguales y las direcciones IP son diferentes. Al usar la palabra clave ''dentro'', podemos limitar el período de tiempo que este patrón debería ocurrir dentro (en milisegundos). Luego estamos insertando las coincidencias encontradas en el alertStream.
Para obtener más información sobre patrones, eche un vistazo a la documentación de WSO2 CEP sobre patrones . Esta página sobre consultas avanzadas también puede ayudar.