2012-11-28 4 views
1

특정 시간대에 사용자가 특정 순서로 페이지 집합을 탐색 할 때마다이를 감지 할 수 있어야하는 Java 기반 웹 서버 모니터 응용 프로그램을 작성하고 있습니다. 이를 위해 Esper library을 사용하고 있습니다. 쿼리의 최상의 공식화에 대해 몇 가지 의문을 품고 있습니다.EPL을 사용하여 이벤트 시퀀스 추적

먼저 웹 서버에 도달하는 HTTP 요청의 모든 정보를 저장하는 데 사용되는 '액세스'개체를 선언했습니다. 서버에 새로운 요청이 발행 될 때마다 새로운 Access 객체가 인스턴스화되어 EPL 처리 코어로 이벤트로 전송됩니다.

페이지 A, 페이지 B, 페이지 C를 탐색하는 모든 사용자를 추적한다고 가정합니다.이 경우를 처리하는 최적의 방법은 무엇입니까? 다음 예제와 같이 전환 할 때마다 하나씩 여러 개의 조인을 수행해야합니까?

select * from Access(request='GET /A HTTP/1.1').win:time(30 sec) as a1, 
Access(request='GET /B HTTP/1.1').win:time(30 sec) as a2, 
Access(request='GET /C HTTP/1.1').win:time(30 sec) as a3 
where a1.IP=a2.IP AND a2.IP=a3.IP 

답변

0
select * from pattern[ every 
    a=pageA -> 
    b=pageB(a.IP=b.IP) -> 
    c=pageC(a.IP=b.IP and c.IP=b.IP) within timer.interval(30s)]; 

특정 순서대로 들어가기를 원한다면 도움이 될 수 있습니다.

+0

감사합니다. – Umberto

0

주문이 정의되지 않은 경우 가입을 사용합니다. 즉, 사용자가 임의의 순서로 A/B/C를 탐색 할 수 있습니다.

특정 순서를 탐지하기 위해 패턴 (EPL 또는 정규식 기반 일치 인식)을 사용하십시오.