Tất cả các dữ liệu trong StreamInsight được tổ chức thành các chiều. Mỗi chiều mô tả một bộ thuộc tính của dữ liệu thay đổi theo thời gian. Ví dụ một máy thông báo biến động mức giá của các cổ phiếu chứng khoán trong giao dịch theo thời gian hay một máy cảm biến nhiệt độ cung cấp các giá trị nhiệt độ được báo cáo bởi các cảm biến theo thời gian.
Các số liệu cơ bản trong chiều dữ liệu được đóng gói vào các sự kiện. Một sự kiện là các đơn vị dữ liệu cơ bản được xử lý bởi các máy chủ StreamInsight. Mỗi sự kiện bao gồm các phần sau đây [9]:
Header: Tiêu đề sự kiện chứa thông tin định nghĩa loại sự kiện và một hoặc nhiều điểm thời gian để xác định khoảng thời gian cho sự kiện này. Điểm mốc thời gian được xác định dựa trên ứng dụng và nguồn cung cấp dữ liệu thay vì thời gian được cung cấp bởi các hệ thống máy chủ StreamInsight. Các điểm thời gian sử dụng các kiểu dữ liệu DateTimeOffset, trong đó có nhận biết về thời gian khu vực dựa trên chu kì đồng hồ 24 giờ.
Payload.A.NET: Cấu trúc dữ liệu, chứa dữ liệu liên quan đến sự kiện. Người dùng sẽ định nghĩa các trường được xác định trong cấu trúc dựa trên kiểu của Microsoft.NET.
Sự kiện trong chiều dữ liệu có điểm thời gian ứng dụng tương ứng với thứ tự truy vấn của nó và được đặt vào “in order”. Khi điểm thời gian này không đúng, các sự kiện sẽ thông báo “out of order”. Các máy chủ StreamInsight sẽ thực hiện đồng bộ các điểm sự kiện vào và ra của truy vấn như nhau, nếu các sự kiện đến trong cùng thứ tự (trừ khi truy vấn được quy định một cách cụ thể).
Trong một chiều dữ liệu, cấu trúc sự kiện đến điển hình là: Cấu trúc ổn định (chẳng hạn như các bản ghi từ các tập tin hoặc bảng); cấu trúc liên tục và ngẫu nhiên (chẳng hạn như dữ liệu từ một máy quét mã vạch bán lẻ); cấu trúc liên tục với các dữ liệu đột biến (chẳng hạn như các nhấp chuột Web).
Tiêu đề sự kiện: Các tiêu đề của một sự kiện xác định các loại sự kiện
cũng như các thuộc tính thời gian của sự kiện.
Loại sự kiện: Các loại sự kiện cho thấy dù sự kiện này là một sự kiện mới trong chiều hoặc nó được khai báo đầy đủ của các sự kiện hiện có trong chiều dữ liệu. StreamInsight hỗ trợ hai loại sự kiện: INSERT và CTI (chiều thời gian tăng).
Các sự kiện loại INSERT cho biết một sự kiện với dung lượng của nó trong chiều sự kiện. Ngoài ra dung lượng, tiêu đề của sự kiện INSERT xác
định thời gian bắt đầu và kết thúc cho sự kiện này. Bảng 3.1 cho thấy cách bố trí của loại sự kiện INSERT.
Bảng 3.1: Cấu trúc sự kiện Insert
Header Payload
Event kind ::= INSERT
StartTime ::= DateTimeOffset EndTime ::= DateTimeOffset
Field 1 … Field n as CLR types Các sự kiện loại CTI là sự kiện ngắt đặc biệt chỉ có trong các sự kiện đầy đủ của chiều dữ liệu. Cấu trúc sự kiện CTI cung cấp duy nhất một điểm thời gian hiện tại. Một sự kiện CTI phục vụ hai mục đích:
Đầu tiên, nó dùng để cho phép một truy vấn được chấp nhận và xử lý sự kiện mà ứng dụng điểm thời gian cho là phù hợp. Khi một sự kiện CTI phát sinh, máy chủ StreamInsight thấy không có sự kiện INSERT tiếp theo, sẽ phải xem xét lại lịch sử sự kiện điểm thời gian CTI trước. Sau khi một sự kiện CTI đã được phát sinh, phải có sự kiện INSERT. Đây là dấu hiệu đầy đủ của một dòng sự kiện cho phép máy chủ StreamInsight công bố kết quả, bảo đảm rằng các sự kiện hoạt động hiệu quả thông qua hệ thống.
Mục đích thứ hai của sự kiện CTI là để duy trì độ trễ thấp của truy vấn. Khoảng cách giữa các CTI nhỏ sẽ cho các kết quả truy vấn ở một tần số cao hơn. Cấu trúc của một sự kiện loại CTI như sau.
Header
Event kind ::= CTI
StartTime::= DateTimeOffset
Mô hình sự kiện: Mô hình sự kiện xác định hình dạng sự kiện dựa trên
những đặc điểm thời gian của nó. StreamInsight hỗ trợ ba mô hình sự kiện: khoảng thời gian, điểm và cạnh [9].
Sự kiện khoảng thời gian: Có thể được xem như là loại chung chung
khoảng thời gian đại diện cho một sự kiện có dụng lượng hợp lệ cho một thời gian nhất định. Mô hình sự kiện khoảng thời gian yêu cầu thời gian cả hai bắt đầu và kết thúc của sự kiện được cung cấp trong các Metadata sự kiện. Sự kiện khoảng thời gian chỉ có giá trị cho khoảng thời gian cụ thể.
Cấu trúc sự kiện khoảng thời gian thường mô tả trong bảng 3.2.
Bảng 3.2: Sự kiện khoảng thời gian
Metadata Payload
Event kind ::= INSERT StartTime::= DateTimeOffset EndTime::= DateTimeOffset
Field 1 … Field n as CLR types
Mô hình sự kiện điểm: Đại diện cho một sự kiện xảy ra như một điểm duy nhất trong thời gian. Các mô hình điểm sự kiện chỉ đòi hỏi thời gian bắt đầu cho sự kiện này. Các máy chủ StreamInsight nhận biết thời gian kết thúc hợp lệ bằng cách thêm một đánh dấu (đơn vị thời gian nhỏ trong các loại hình dữ liệu thời gian cơ bản) với thời gian bắt đầu để thiết lập khoảng thời gian hợp lệ cho sự kiện này. Xem xét sự kiện lần cuối là duy nhất, điểm sự kiện chỉ có hiệu lực duy nhất và ngay lập tức khi thời gian bắt đầu. Cấu trúc trong bảng 3.3 cho thấy cách bố trí của một mô hình điểm sự kiện.
Bảng 3.3: Mô hình điểm sự kiện
Metadata Payload
Event kind ::= INSERT
StartTime ::= DateTimeOffset Field 1 … Field n as CLR types
Mô hình sự kiện cạnh: Thể hiện cho sự kiện có dữ liệu phù hợp trong một khoảng thời gian nhất định. Tuy nhiên, chỉ có thời điểm bắt đầu được máy chủ StreamInsight nhận biết, thời điểm cuối được xác định là thời gian
tối đa dữ liệu còn phù hợp trong tương lai. Mô hình sự kiện cạnh có hai đặc tính là thời gian xuất hiện và loại cạnh thể hiện trong bảng 3.4.
Bảng 3.4: Sự kiện cạnh
Metadata Payload
Event kind ::= INSERT
Edge time ::= DateTimeOffset Edge type ::= START | END
Field 1 … Field n as CLR types
Để có hiệu suất tốt, quan trọng là lựa chọn mô hình sự kiện phù hợp cho hệ thống của bạn. Ví dụ nếu bạn có những sự kiện kết thúc trong một khoảng thời gian và ứng dụng của bạn có khả năng xác định điểm bắt đầu và điểm kết thúc của sự kiện, tốt hơn nên sử dụng mô hình sự kiện khoảng thời gian. Nếu bạn có một kịch bản mà bạn không biết thời gian kết thúc sự kiện, bạn có thể xem xét mô hình hóa các sự kiện điểm, ...