Releasing StreamInsight V1.1

Today we are excited to announce the release of StreamInsight 1.1, just four months after our Version 1.0 Refresh! According to our goal of adding value incrementally with every new version, these are the new features in 1.1:

  • Using .NET sequences instead of adapters as event sources and sinks, which makes the integration with many existing data sources much easier and lowers the barrier of entry.
  • Installing StreamInsight side-by-side with an older version. This enables you to safely upgrade to the new release, while having the option to keep running your existing applications against the former version of StreamInsight.
  • Performance and Stability improvements.

Let’s have a closer look at each of these:

Support for .NET Sequences

So far, the only way to get data in and out of StreamInsight was to write adapters against the API. The adapter model is very powerful and flexible, alas, adapter development can easily become complex. In this new release, StreamInsight supports event sources and event sinks that implement the IObservable  and IEnumerable interfaces. These interfaces are the dominant general-purpose contracts in the .NET Framework for pulling (IEnumerable) and pushing (IObservable) data among an application’s components. This new API is especially convenient for historical queries, where the full set of input events is known in advance, and ad-hoc queries over live data sources, where a query is short-lived and only needs to exist as long as the client app listens to the results. This new API also simplifies query testing. Here is an example using a simple IEnumerable as the event source:

 var data = Enumerable.Range(1, 10);

var inputstream = data.ToPointStream(
    myApp,
    t => PointEvent.CreateInsert(DateTime.Now + TimeSpan.FromMinutes(t), new { t }),
    AdvanceTimeSettings.StrictlyIncreasingStartTime);

var result = from e in inputstream ...

foreach (var r in result.ToEnumerable()) ...

Notice how the new overload ToPointStream converts the IEnumerable into a CepStream, taking into account the mapping to an event type (including its timestamps) and the advance time specification in the stream. Also notice how the LINQ expression itself becomes another IEnumerable. Apart from the server and application instantiations, these four lines represent a complete StreamInsight application!

Within a few hours, we will post a number of Sequence Integration samples on CodePlex. Note that IObservable integration requires .NET 4.0.

Side-by-Side Installation Support

The new version of StreamInsight installs without replacing a previous version. If you have an existing installation, 1.0 and 1.1 will co-exist on the same system. All existing and new StreamInsight applications will automatically link to the new libraries, unless specified otherwise through the application’s configuration file as follows:

 <publisherPolicy apply="no" />

Note that there was no breaking change in the runtime libraries, so that no recompilation of existing applications is necessary. More information regarding redirection of assembly versions can be found here.

Performance and Stability Improvements

A number of bug fixes and performance improvements have gone into this release. Notable is the reduction of latency for hopping windows, where a certain pattern of CTIs would make the engine hold back window results longer than needed in previous versions. Another important fix drastically increases throughput for join operations on edge streams (produced by an edge adapter or the Clip operator), which is a common pattern when combining real-time with reference streams.

Download

You can download the bits here:

StreamInsight 64bit

StreamInsight 32bit

As with previous version, the Microsoft StreamInsight Client package installs a subset of Microsoft StreamInsight which lets you implement only the client side functionality: Connecting to an existing StreamInsight server, managing queries, and using the debugger tool. It does not support running an embedded server or creating a StreamInsight service. The license for the Microsoft StreamInsight Client is free.

StreamInsightClient 64bit

StreamInsightClient 32bit

The localized versions will follow in a couple of days in the Microsoft Download Center – we’ll announce them here.

Documentation and Samples

The documentation for the new release is already online. We will have the samples ready and on CodePlex within the next 24h – check back here to get the latest information.

As usual, let us know what you think about the new features in the comments or the forum. Happy Streaming!

The StreamInsight Team