esper 관련 개념

1. 사건 흐름 분석
EPL 문 구 는 하나 이상 의 이벤트 흐름 에서 정 보 를 파생 하고 취 합 하 며 이벤트 흐름 을 추가 하거나 통합 하고 하나의 시간 흐름 결 과 를 후속 문구 에 제공 합 니 다.EPL 은 selection 구문 과 where 문 구 를 사용 할 때 SQL 과 유사 하지만 EPL 문 구 는 이벤트 흐름 과 views 로 데이터베이스 표 를 교체 합 니 다.SQL 표 와 비슷 합 니 다. views 는 조회 와 여과 에 사용 할 데 이 터 를 정의 합 니 다.views 는 이벤트 흐름 의 창 을 표시 할 수 있 습 니 다.views 도 이 벤트 를 정렬 하고 이벤트 속성 에서 통계 데 이 터 를 가 져 오 며 이벤트 그룹 을 나 누 거나 유일한 이벤트 속성 값 을 처리 할 수 있 습 니 다.
select avg(price) from StockTickEvent.win:time(30 sec);주식 사건 의 과거 30s 평균 가격 을 계산 하 다.
select symbol, avg(price) as averagePrice from StockTickEvent.win:length(100) group by symbol;상위 100 개 주식 사건 의 평균치
아래 의 예 는 두 사건 의 흐름 과 관련 이 있다.첫 번 째 사건 흐름 은 사기 경고 사건 으로 구성 되 어 지난 30 분간 의 사건 정 보 를 저장 하 는 데 사용 된다.두 번 째 흐름 은 withdrawal 이벤트 로 지난 30 초 간 의 사건 을 저장 합 니 다.이 두 흐름 은 account number 를 통 해 연 결 됩 니 다.
select     fraud.accountNumber as accntNum, 
            fraud.warning as warn, 
            withdraw.amount as amount,    
            MAX( fraud.timestamp, withdraw.timestamp) as timestamp,
             'withdrawlFraud'    as desc    from FraudWarningEvent.win:time(30 min) as fraud,
            WithdrawalEvent.win:time(30 sec)  as withdraw where fraud.accountNumber=withdraw.accountNumber</span>

2. 이벤트 모드 일치
Event patterns match when an event or multiple events occur that match the pattern 's definition. 패턴 정의 에 부합 되 는 하나 이상 의 이벤트 가 발생 했 을 때 이벤트 패턴 이 일치 했다 고 생각 합 니 다.
패턴 도 시간 에 기초 할 수 있다.패턴 매 칭 은 상태 기 를 통 해 이 루어 집 니 다.
패턴 표현 식 은 패턴 조작 자 를 연결 한 필터 표현 식 으로 구성 할 수 있 습 니 다.괄호 안에 끼 워 넣 는 표현 식 을 통 해 더 깊 은 패턴 표현 식 끼 워 넣 기 를 실현 할 수 있 습 니 다.
5 종류 연산 자:
제어 모드 탐지 기의 생 성과 종료: every 논리 연산 자: and, or, not 이벤트 순 서 를 조작 하 는 시간 연산 자: > (뒤따라 발생 하 는, followed by) 출력 이벤트 의 where 조건 을 걸 러 모드 탐지 기의 종 료 를 일 으 킵 니 다. 예 를 들 어 timer: within 다른 사건 을 관찰 하 는 것 과 마찬가지 로 관찰자 도 시간 사건 을 관찰한다. 예 를 들 어 timer: interval, timer: at 다음은 EPL 의 예 입 니 다.
//          60  IBM     80       every StockTickEvent(symbol="IBM", price>80) where timer:within(60 seconds)
//     5      :  every timer:at(5, *, *, *, *)
// A     ,       B   C  ,     (  A  )  A -> ( B or C )
//       EventX,    EventY  ,   objectID EventX objectID  ,     (  a  ):  every a=EventX -> every b=EventY(objectID=a.objectID)

3 모드 일치 와 이벤트 흐름 분석 결합 사용
이벤트 시퀀스 가 감지 되 거나 이벤트 가 발생 하지 않 았 을 때 패턴 이 일치 합 니 다.패턴 이 일치 하 는 결 과 는 진일보 한 분석 과 처리 에 사용 할 수 있다.
아래 의 모델 모니터링 은 Status 사건 발생 후 10s 에는 동일 한 ID 의 status 사건 발생 장면 이 없습니다.전체 EPL 문 구 는 발생 하 는 모든 ID 의 이벤트 총 수 를 한층 더 계산 했다.
select a.id, count(*) from pattern [ every a=Status -> (timer:interval(10 sec) and not Status(id=a.id) ] group by id

4    이름 창
이름 창 은 엔진 에 있 는 전역 데이터 창 으로 많은 구문 조회 에 참여 할 수 있 으 며, 여러 statement 에서 select, insert, delete 작업 을 수행 할 수 있 습 니 다.이름 창 은 관계 형 데이터베이스 시스템 의 표 와 비슷 합 니 다.
다음 몇 단 계 를 통 해 이름 창 을 만 들 수 있 습 니 다:
create window AlertNamedWindow as (origin string, priority string, alarmNumber long)

이벤트 가 도 착 했 을 때 selection, update 또는 delete 작업 을 실행 할 수 있 습 니 다.다음은 selection 응용 프로그램 입 니 다. 간단 한 통계 데이터 창의 기록 줄 총수 입 니 다.
on TriggerEvent select count(*) from AlertNamedWindow

5    일치 - 식별 모드 일치 (일치 - 패턴 일치 인식)
일치 - 식별 모드 는 정규 표현 식 을 바탕 으로 하 는 패턴 일치 문법 으로 SQL 에 들 어 가 는 것 을 권장 하 는 표준 문법 입 니 다.
아래 의 일치 - 식별 모드 는 이벤트 에 나타 날 수 있 는 모드 를 탐지 합 니 다. 이 이벤트 들 은 이름 창 (위 설명) 을 통 해 저 장 됩 니 다.이 모드 에서 찾 은 것 은 사건 사이 에 같은 origin 이 없다 는 두 개의 밀접 한 사건 이다.첫 번 째 사건 은 반드시 'high' 우선 순위 가 있어 야 하고, 두 번 째 사건 은 반드시 'medium' 우선 순위 가 있어 야 한다.
select * from AlertNamedWindow  
 match_recognize (  
 partition by origin  
 measures a1.origin as origin, a1.alarmNumber as alarmNumber1, a2.alarmNumber as alarmNumber2  
 pattern (a1 a2)  
 define a1 as a1.priority = 'high',  
 a2 as a2.priority = 'medium' )

6    변수 (변수)
변 수 는 스칼라, 대상 또는 이벤트 값 으로 모든 statement 에 사용 할 수 있 습 니 다. 모드 를 포함 합 니 다.변 수 는 EPL 의 임의의 위치 표현 식 에 사용 할 수 있 습 니 다.
총결산
Esper 응용 프로그램 을 개발 할 때 이벤트 유형 은 자바 류 를 사용 하 는 것 을 권장 하고 이벤트 정보 에 대한 설명 이 더욱 직관 적 이다.복잡 한 관 계 를 가 진 사건 디자인 에 서 는 맵 방식 을 사용 하 는 것 을 권장 하지 않 는 다.
EPL 을 디자인 할 때 업무 수요 에 따라 표준 SQL 문법 을 통 해 완성 할 수 있 으 면 일치 하 는 모드 를 사용 하지 마 십시오. 실행 할 때 Pattern 에 대해 추가 적 인 분석 을 해 야 하기 때문에 그 규칙 은 SQL 보다 복잡 하고 성능 에 약간의 손실 이 있 습 니 다.
데이터 창 을 사용 하면 Esper 가 분포 식 캐 시, 정적 데이터 와 의 사용 등 더욱 복잡 한 응용 장면 을 처리 할 수 있 습 니 다.변 수 는 이해 하기 어렵 지 않 습 니 다. 자바, C / C + + 와 같은 고급 개발 언어 든 ruby, JS 등 스 크 립 트 언어 든 모두 변수의 개념 이 있 습 니 다. 그 사용 범 위 는 현재 Esper 엔진 인 스 턴 스 에 만 제 한 됩 니 다.
후속 문장 은 본문 이 제기 한 개념 을 상세 하 게 소개 할 것 이다.

좋은 웹페이지 즐겨찾기