What is Microsoft StreamInsight?

Introduction

AS I was attending on of the sessions I found an Interesting Microsoft Tool called “Microsoft StreamInsight”, so I decided to write this post to provide more information about it and provide general guidelines on it.

 

What is Microsoft StreamInsight?

Microsoft StreamInsight™ is a powerful platform that you can use to develop and deploy complex event processing (CEP) applications. Its high-throughput stream processing architecture and the Microsoft .NET Framework-based development platform enable you to quickly implement robust and highly efficient event processing applications. Event stream sources typically include data from manufacturing applications, financial trading applications, Web analytics, and operational analytics. By using StreamInsight, you can develop CEP applications that derive immediate business value from this raw data by reducing the cost of extracting, analyzing, and correlating the data; and by allowing you to monitor, manage, and mine the data for conditions, opportunities, and defects almost instantly.

 

By using StreamInsight to develop CEP applications, you can achieve the following tactical and strategic goals for your business:

 

  • Monitor your data from multiple sources for meaningful patterns, trends, exceptions, and opportunities.

    Analyze and correlate data incrementally while the data is in-flight — that is, without first storing it–yielding very low latency. Aggregate seemingly unrelated events from multiple sources and perform highly complex analyses over time.

  • Manage your business by performing low-latency analytics on the events and triggering response actions that are defined on your business key performance indicators (KPIs).

    Respond quickly to areas of opportunity or threat by incorporating your KPI definitions into the logic of the CEP application, thereby improving operational efficiency and your ability to respond quickly to business opportunities.

  • Mine events for new business KPIs.

  • Move toward a predictive business model by mining historical data to continuously refine and improve your KPI definitions.

 

Skillset needed to work with Microsoft Insight

 

  • .Net & Linq

  • Dashboards & Reporting

  • Microsoft SQL Server 2008 R8 or Later (Enterprise)

 

 

Coding Sample

in this section I will provide a quick walkthrough on StreamInsight sample, below are the steps:

  • Create an instance of the Server, in this case I called it “MyInstance”
  • Create an Application “MyApp”.
  • Create an Input Stream; this input stream will be used as a demo purpose to provide the data source.
  • Creating a Query to filter results using Linq Query
  • Configure the Events & Endpoints
  • Run & Stop the engine

 

PS: For more details visit StreamInsight on MSDN, link for related topics is found in the reference section.

 

The Code:

Server server = null;

using (Server server = Server.Create(”MyInstance”))
{
    try
    {
        Application myApp = server.CreateApplication(“MyApp”);

        var inputstream = CepStream<MyDataType>.Create(“inputStream”,
                                                       typeof(MyInputAdapterFactory),
                                                       new InputAdapterConfig { someFlag = true },
                                                       EventShape.Point);

        var filtered = from e in inputstream
                       where e.Value > 95
                       select e;

        var query = filtered.ToQuery(myApp,
                                     “filterQuery”,
                                     “Filter out Values over 95”,
                                     typeof(MyOutputAdapterFactory),
                                     new OutputAdapterConfig { someString = “foo” },
                                     EventShape.Point,
                                     StreamEventOrder.FullyOrdered);

        query.Start();
        Console.ReadLine();
        query.Stop();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.ToString());
    }
}

 

References