Datasports on Software Development

Articles and updates from Datasports about the craft of software

Archive for October 2011

StreamBase and Productivity

with 3 comments

1. Introduction

The StreamBase development platform is marketed on a number of selling points, the two main benefits being high performance and rapid application development (two benefits that are generally presumed to be in opposition with one another). In this article I will share my experiences positive and negative regarding the productivity of working with the StreamBase platform.

The discussion touches on EventFlow coding vs. the Java and .Net platforms, the value of the library of adapters, and build/test/deploy realities.

Read the rest of this entry »

Advertisements

Written by datasports

Oct 27, 2011 at 12:02 AM

Posted in Real World

Tuple Identity and Lifetime

leave a comment »

1. Introduction

The graphical nature of EventFlow applications and the metaphor of streams of tuples flowing through operators and adapters, naturally gives rise to a mental model of tuples that is not strictly correct, and a potential barrier to correct understanding of how tuples are processed in the StreamBase platform.

This article provides a brief overview of tuple lifetime and identity that is meant to clarify understanding of what a tuple is, what it does, and for how long.
Read the rest of this entry »

Written by datasports

Oct 10, 2011 at 5:40 PM

Posted in Tutorials

Thoughts on Encapsulation Schemes, Part 2

with 3 comments

1. Introduction

As discussed in the Part 1 of this article, StreamBase provides a variety of hosting mechanisms for .sbapp modules. Each of these mechanisms has its own set of options related to synchronicity and concurrency, which will be the focus of this article.

A big part of the win with the visual editing of StreamBase EventFlow logic is the ease with which threading models can be specified, modified, and tuned. In general, little more is required than to select a component or module and specify some concurrency parameters. Moving logic into or out of different processing threads is as simple as moving logic into and out of modules. In my experience, this is a huge productivity gain over traditional programming environments such as .NET or J2EE. Developers can begin by getting logic correct, then make targeted changes to tune the concurrency/threading settings to maximize performance where needed.

Of course, with this great power comes great responsibility. The ease of changing these settings means that no application is more than a few checkboxes away from bad performance due to thread-thrashing, or logic errors due to race conditions. This article will survey the different options and present some guidelines, but it will always be the responsibility of the application developer to gather the metrics, analyze the logic, and provide the insight necessary to ensure correct and high-performance behavior. Those analytical skills are not so different from what would be applied in other environments, but the big win with StreamBase is that the plumbing is all taken care of for you.
Read the rest of this entry »

Written by datasports

Oct 5, 2011 at 7:02 PM

Posted in Best Practices

Thoughts on Encapsulation Schemes, Part 1.

leave a comment »

1. Introduction

StreamBase has a set of related features which allow the quick and relatively painless refactoring of logic into modules, and several mechanisms for reusing those modules in your code. These are very powerful features which are an important part of what makes StreamBase development so productive compared to other environments like .NET or J2EE.

Despite being incredibly powerful and flexible, the mechanisms for encapulating and re-using logic, and the many options related to concurrency are accessible and straightforward to use. While the StreamBase platform handles an incredible amount of plumbing that would otherwise fall to the application developer, due care must still be taken to ensure that the correct approach is taken to ensure correct behavior with the highest possible performance.

This article will provide an overview of the many different combinations of hosting types as well as present some heuristics about when the different approaches make sense.

This discussion considers encapsulation schemes along two axes: hosting types (discussed in this article), and concurrency settings (discussed in Part 2 of this article). Not every possible combination is valid, but in general the type of hosting and the concurrency options are independent.
Read the rest of this entry »

Written by datasports

Oct 4, 2011 at 10:46 PM

Posted in Best Practices