Professional Documents
Culture Documents
StreamInsight
Speaker: Mark Simms
Microsoft SQLCAT
10000
Active DW analytics
1000
Traditional DW Analytics
100
years months days hrs min sec
Time of interest
Present
ET time in ETL Load time in ETL
Analytical results need to reflect important changes in
business reality immediately and enable responses to them
with minimal latency
Database Applications Event-driven Applications
Query Ad-hoc queries or Continuous standing
Paradigm requests queries
Latency Seconds, hours, days Milliseconds or less
Data Rate Hundreds of events/sec Tens of thousands of
events/sec or more
Query Declarative relational Declarative relational and
Semantics analytics temporal analytics
request Event
output
stream
input
stream
response
5
Latency
Months
StreamInsight
Days Target Scenarios
Data Stream
Visual trend-line and KPI monitoring
Batch & product management
Automated anomaly detection
Real-time customer segmentation
Algorithmic trading
Proactive condition-based maintenance
7
Industry trends
• Data acquisition
costs are
Manage
negligible business via
KPI-triggered
• Raw storage costs
actions
StreamInsight Application
Development
StreamInsight Application at Runtime
Event sources Event targets
Input Output
Devices, Sensors Adapters StreamInsight Engine Adapters Pagers &
Monitoring devices
Standing Queries KPI Dashboards,
SharePoint UI
Web servers
Query Query
Logic Logic
Trading stations
Event stores &
Databases Query
Logic
Adapters
Engine
Queries
Extensions
Host
visual debugger
API
expressed
question
data
data
question
Tell me the just the color of each car that passes.
Enqueue(ref ev);
}
public void EnqueueEvent(SourceData d)
{
if AdapterState
return
var ev = CreateInsertEvent();
Enqueue(ref ev);
}
public void EnqueueEvent(SourceData d)
{
if AdapterState
return
var ev = CreateInsertEvent();
if (ev == null) return;
Enqueue(ref ev);
}
public void EnqueueEvent(SourceData d)
{
if AdapterState
return
var ev = CreateInsertEvent();
if (ev == null) return;
Ready();
return;
}
}
Use them wisely!
public class TimeWeightedAverage :
CepTimeSensitiveAggregate<double, double>
{
public override double
GenerateOutput(IEnumerable<IntervalEvent<double>> events,
WindowDescriptor windowDescriptor)
{
double avg = 0;
foreach (IntervalEvent<double> ev in events)
{
avg += intervalEvent.Payload *
(ev.EndTime - ev.StartTime).Ticks;
}
return = avg / (windowDescriptor.EndTime –
windowDescriptor.StartTime).Ticks;
}
}
To learn more or inquire about speaking opportunities, please contact: