StreamInsight 개념

 

이 항목에서는 데이터가 Microsoft StreamInsight 프로그램에서 표시되고 처리하는 방식에 대해 설명합니다. 여기서 StreamInsight의 CEP(복합 이벤트 처리)와 관련된 기본 개념을 익히는 데 필요한 설명을 제공합니다. 먼저 데이터 구조에 대해 설명한 다음 데이터에 대해 작동하거나 데이터를 처리하는 StreamInsight 엔터티에 대해 설명합니다.

데이터 시퀀스

StreamInsight는 3가지 다른 유형의 데이터 시퀀스와 함께 작동합니다.

  • 끌어오기 - A 끌어오기 데이터 시퀀스는 순서대로 나열된 동일한 유형 개체 목록이며 IEnumerable<> 인터페이스를 통해 구현됩니다. 이 시퀀스 소비자는 LINQ-to-Objects 프레임워크를 사용하여 반복적으로 액세스할 수 있습니다. 자세한 내용은 LINQ to Objects를 참조하십시오.

  • 밀어넣기 - A 밀어넣기 데이터 시퀀스는 순서대로 나열된 동일한 유형 개체 목록이며 IObservable<> 인터페이스를 통해 구현됩니다. 데이터 원본은 Reactive Framework LINQ 언어를 사용하여 데이터에 액세스하는 한 명 이상의 데이터 소비자에게 시퀀스를 밀어넣습니다. 자세한 내용은 Reactive Extensions를 참조하십시오.

  • 임시 스트림 - A 임시 스트림은 고유한 특성을 가진 이벤트 시퀀스입니다. 임시 스트림은 IStreamable<> 인터페이스를 통해 구현되며 StreamInsight LINQ를 사용하여 처리할 수 있습니다.

임시 스트림

임시 스트림은 StreamInsight에 의해 인식되는 특정 유형의 데이터 스트림입니다. 이는 끝나지 않는 데이터 시퀀스이며 각 이벤트가 페이로드와 이벤트의 시작 시간 및 종료 시간을 식별하는 시간 구성 요소로 구성됩니다. 예를 들어 주식 종목 스트림에는 주식 시장에서 시간에 따라 바뀌는 여러 주가를 제공하거나 온도 센서 스트림에는 시간에 따라 센서에서 보고하는 온도 값을 제공합니다.

임시 스트림은 다음과 같은 고유한 특징이 있습니다.

  1. 스트림의 각 이벤트에 타임스탬프가 있습니다.

  2. 스트림에는 이벤트가 특정 시점까지 완료됨을 알려주는 특별한 이벤트인 CTI(현재 시간 증분) 이벤트가 포함되어 있습니다.

  3. 스트림의 이벤트는 CTI 모델을 따릅니다. 이는 CTI가 임시 스트림에 나타날 때 스트림에 있는 더 이상의 이벤트가 CTI 타임스탬프 이전의 타임스탬프를 가질 수 없음을 의미합니다.

이벤트

임시 스트림에 표시되는 기본 데이터는 이벤트로 패키지됩니다. 이벤트는 StreamInsight에서 처리하는 데이터의 기본 단위입니다. 각 이벤트는 헤더페이로드로 구성됩니다. 이벤트 헤더에는 이벤트 종류를 정의하는 메타데이터와 이벤트의 시간 간격을 정의하는 하나 이상의 타임스탬프가 포함됩니다. 페이로드는 이벤트와 연결된 데이터를 포함하는 .NET 데이터 구조입니다. 페이로드의 필드는 사용자 정의 필드에 정의되며 필드 형식은 .NET 형식 시스템을 기반으로 합니다.

StreamInsight에서는 삽입 및 CTI(현재 시간 증분)의 두 가지 이벤트 종류가 지원됩니다. INSERT 이벤트 종류는 이벤트 시작 및 종료 시간과 함께 페이로드로 이벤트 스트림에 이벤트를 추가합니다. CTI 이벤트 종류는 현재 타임스탬프를 제공하는 단일 필드로 구성되는 특수 중단 이벤트입니다. CTI 이벤트는 스트림에 있는 기존 이벤트가 특정 시간까지 완료됨을 알려주며 해당 응용 프로그램 타임스탬프가 쿼리에 도착한 순서에 해당하지 않는 이벤트를 쿼리에서 허용 및 처리할 수 있도록 합니다.

StreamInsight 이벤트와 CTI 이벤트 용도에 대한 자세한 내용은 이벤트 구조를 참조하십시오.

StreamInsight 엔터티

StreamInsight 프로그램은 5개의 기본 엔터티 유형인 원본, 싱크, 주체, 바인딩 및 프로세스를 만들고 사용합니다.

원본

원본은 데이터 생성기입니다.

시퀀스 및 임시 스트림에서의 LINQ 쿼리 컴퍼지션을 지원하려면 StreamInsight가 원본 유형의 IQueryable, IQbservableIQStreamable 특수화 구현을 표시합니다. 인터페이스는 System.Linq, System.Reactive.Linq, 및 Microsoft.ComplexEventProcessing.Linq 네임스페이스에 각각 정의됩니다(자세한 내용은 IQueryable, IQbservableIQStreamable을 참조하십시오).

싱크

싱크는 데이터 소비자입니다. 싱크는 IObservable/IStreamable 원본의 Observer이거나 IStreamableSinkIStreamable 원본의 Observer일 수 있습니다.

참고


소비자(열거자)가 열거에서 직접 가져온 IEnumerable 계약의 특성 때문에 Enumerator 싱크의 개념이 없습니다.

주체

주체는 데이터 생산자이자 소비자입니다. 여러 명의 생산자 및 소비자를 통해 계산 및 상태를 공유하는 역할을 합니다. 주체는 IObservableIObserver 인터페이스를 모두 구현하며 Observable 원본을 구독하고 Observer 구독을 허용하도록 설정합니다.

참고


주체는 IStreamable 인터페이스를 직접 지원하지 않습니다.

바인딩

바인딩은 원본, 싱크 또는 주체의 실행 컴퍼지션입니다. 원본을 싱크로 연결하는 데 사용되는 논리입니다.

프로세스

프로세스는 바인딩의 명명된 실행입니다.

참고 항목

StreamInsight 서버에 StreamInsight 엔터티 배포
계획 및 아키텍처(StreamInsight)