StreamBase 3.0 Release History

This topic lists the significant changes in the StreamBase 3.0.x release series.

StreamBase 3.0.2

StreamBase 3.0.2 fixed a number of product limitations. For details, see the Release Notes. In addition, the following changes to existing functionality were made:

  • A new class, TupleCSVWriter, was added to the StreamBase Java Client API, to provide a fast way of outputting data to a Java output stream. For reference information about the class, see the Java API Documentation documentation.

  • Query table operations were optimized to improve performance.

StreamBase 3.0.1

StreamBase 3.0.1 introduced the following new product features and important changes to existing functionality:

  • Sped up the conversion of timestamps to strings in the StreamBase Java Client API.

  • Changed the default character set in the StreamBase Java Client API from UTF-8 to US-ASCII, to improve performance when getting and setting strings.

  • The behavior of two methods in the StreamBase Monitor API has changed. In previous releases, OperatorInfo.getProfilerHits() and OperatorInfo.getTotalProfilerHits() returned a cumulative value. They now return an incremental value, the number of miniticks consumed by this operator and in total since the last stats period (defaulting to 1 second). For information about this feature, see Developing StreamBase Monitor Applications.

StreamBase 3.0.0

  • StreamBase 3.0.0 introduced the following new product features and important changes to existing functionality:

    • Increased server processing speeds in many cases, by dynamically compiling application diagrams into Java bytecode.

    • a StreamBase Server now processes inbound data in a predictable execution sequence by default.

    • A new adapter for StreamBase applications on Windows and Linux environments: the StreamBase adapter for EMS/JMS.

  • Important! Starting in StreamBase 3.0.0, you MUST have the full Sun Java Development Kit (JDK) installed in order to run StreamBase. In prior StreamBase releases, it was sufficient to use the Java Runtime Environment (JRE) to run StreamBase Studio on your development machine; if you wanted to compile StreamBase clients written in Java, of course you needed the JDK.

    The full JDK is required because the product compiles StreamBase applications into classes. Remember that the JDK is required for each machine running StreamBase, whether the applications are for development, staging, or production. For information about the supported JDK versions, please refer to the Supported Configurations topic in the Installation Guide.

    The StreamBase installation attempts to verify that a JDK is installed that can be used to run StreamBase. If none is found, the installation proceeds, but a message is displayed informing you of the problem. On Linux or Solaris, StreamBase Systems recommends that you assign the JAVA_HOME environment variable to the JDK installation directory. On Windows, the configuration registry is examined to find the best available Sun JDK to use; the JAVA_HOME environment variable overrides the registry setting if different. A copy of the JDK is provided on the StreamBase product CDs for Windows and Linux.

    At runtime, when you start a StreamBase Server instance (sbd) to host your application, StreamBase searches for the JVM in the following order:

    1. Uses the java-home attribute in the <java-vm> section of the sbd.sbconf configuration file.

    2. If the java-home attribute is not set, sbd uses the JAVA_HOME environment variable.

    3. The sbd will search through your PATH environment variable to find a suitable JDK.

    4. If the JAVA_HOME environment variable is not set, sbd will make some guesses (to try to find a JVM on your system).

    5. If all of the above fails, sbd will not start.

    For related information about the <java-vm> section of the sbd.sbconf file, see java-vm .

  • By default, a StreamBase Server processes inbound data in a predictable execution sequence. That is, input tuples are each processed individually to completion, from left-to-right through a StreamBase application diagram. At StreamBase Server startup time, the application diagram is converted into Java source code, which is then dynamically compiled to Java bytecode, which in turn is executed by a VM/JIT. For more information, please see Execution Order, Concurrency, and Parallelism in the Authoring Guide.

    If you know that portions of your StreamBase application can run without dependencies on the other streaming data in your application, you may be able to improve the overall throughput by selecting optional concurrency settings. Most StreamBase operators and any module reference have an option to run the component in its own thread. You will notice this option on the General tab of most components' Properties View. Distributing the load automatically across processors on an SMP machine may result in faster performance if concurrency is appropriate for your application. For more information, see the section on concurrency options for module references and operators in Execution Order, Concurrency, and Parallelism.

  • The StreamBase Studio feature called "regions" is replaced by concurrency options on selected components in your application diagram. Consequently, the Regions View is not presented in StreamBase Studio. If you had pre-3.0 StreamBase applications that used regions, the IDE will display a message about this change. The most common use case is to then organize a former region's components into a module reference, and then enable its concurrency setting: "Run this component in a separate thread." For more information, see the section on concurrency options for module references and operators in Execution Order, Concurrency, and Parallelism.

  • On Windows, the Sun JDK 1.5.0_05 will not work correctly with StreamBase. If you have installed that version of the JDK, you should upgrade to version 1.5.0_06 or later.

  • StreamBase 3.0.0 introduced a number of changes in the StreamBase Server configuration file, sbd.sbconf.

    • The sbd.sbconf configuration skeleton file no longer contains the following obsolete parameter of the <runtime> section:

      <param name="scheduler" value="SBScheduler"/>
      

      If you have existing StreamBase Server configuration files from prior releases, please remove this line from the *.sbconf file. If your server configuration contains that parameter, the StreamBase Server might not start. This change was made because the product compiles a StreamBase application's components into one or more Java classes, resulting in a predictable execution sequence.

    • The sbd.sbconf configuration skeleton file adds the following new parameter to the <runtime> section:

      <param name="schema-max-size" value="1048576"/>
      

      The new parameter is commented out in sbd.sbconf, however the example value shows the default maximum size (1 MB) of all the fields that comprise the schema of inbound tuples. StreamBase allows you to change this value in the configuration, for example if you need to increase it to accommodate larger tuples. Remember that the StreamBase page-size parameter in the <page-pool> section must be large enough to accommodate your largest tuple, and the StreamBase page-pool value must be a multiple of the system's page pool (4096 on Windows and Linux, or 8192 on SPARC).

      Caveat: It is important that you allocate sufficient size for tuples, but at the same time try to minimize the size of inbound tuples (data movement is a big performance cost in streaming applications), and set an upper limit on inbound tuples based on your application's requirements.

    • The <server> section adds a connection-backlog parameter. Servers with many clients may want to increase the maximum number of backlogged connections to the server. The default value is 10.

    • The <data-sources> section has been removed from the sbd.sbconf file. See below for information about an alternative to the obsolete ODBC operator.

    For details about all the sbd.sbconf parameters, please see the StreamBase Server Configuration XML topic in the Reference Guide. Also see Defining a StreamBase Server Configuration in the Administration Guide.

  • Starting in StreamBase 3.0.0, the product's features increased server processing speeds in many cases. Therefore, under certain circumstances, it is possible for applications to experience disconnects from the StreamBase Server under this version, even though they ran without this problem under previous versions. Such disconnects can occur when your client cannot dequeue data fast enough to keep up with data rates from the server, and the server buffer fills up.

    If you experience this problem with an application, test your application under load. If you observe disconnects from the server when the server buffer is full, consider these two solutions:

    If the disconnect events are associated with spikes in data output, you can try modifying the server configuration file's <page-pool> parameters to increase buffering. This might allow the client application to keep up with intermittent output peaks.

    However, if you observe sustained high output, increased buffering may not solve the problem. In this case, you might need to modify your client application to make it dequeue data faster.

  • In Aggregate operator time-based dimensions, timeout events will now trigger based on wallclock time rather than the (now removed) tuple header timestamp. This means that tuples will be emitted after the appropriate time has passed, followed by the arrival of a new tuple. Additionally, there is no longer a concern with out-of-order header timestamps in applications unioning multiple input streams. See the Using the Aggregate Operator topic for details.

  • In a Query operator defined for read or delete operations, if you chose a Where setting that returns more than one row, you can limit the number of rows read or deleted from the connected Query Table. For example, you might want to retrieve a list of the top n rows, or maintain a query table by deleting n top or bottom values. For more information, please see Using the Query Operator in the Authoring Guide.

  • In a BSort operator, you can base the sort on the values of a specified input field (if it's numeric). For more information, please see Using the BSort Operator in the Authoring Guide.

  • This release adds a new Split operator. You can insert a Split operator right after an upstream component that has a single output port and multiple output arcs, to explicitly indicate the order in which the outputs should be processed (to completion) by each set of downstream components. For details, see Using the Split Operator in the Authoring Guide.

  • The C++ API for custom functions has been changed starting in StreamBase 3.0. To use StreamBase applications written with previous releases, you will need to rewrite any StreamBase C++ custom functions (simple or aggregate), and recompile them. In addition, C++ custom functions are invoked with a new callcpp() function. The changes are described in Creating Custom C++ Functions in the API Guide.

  • You can use a StreamBase Java API to create custom functions (simple and aggregate). This new API is in addition to the C++ API for custom functions. In the StreamBase expression language, custom functions that you implement in Java are invoked by using the new calljava() function. For more information, please see Creating Custom Java Functions in the API Guide.

  • In the StreamBase Monitor API, methods in the Snapshot class have changed to reflect the new server architecture. If you used the API in prior releases to create a MonitorListener program, you will need to update your code and recompile. For details, please see the "Snapshot Object" section of Developing StreamBase Monitor Applications, a topic in the API Guide.

    In addition, the display of performance statistics in StreamBase Monitor has changed to reflect the new server architecture. For more information, see Using the Performance Monitors in the Test/Debug Guide.

  • StreamBase 3.0 has removed direct support for ODBC, while maintaining support for the popular JDBC standard. StreamBase Systems recommends that customers switch to using JDBC wherever possible to get the best performance and support from database vendors.

    The ODBC operator and ODBC Table data construct have been removed from the product. Instead we recommend that you use the separately installed StreamBase Adapter for JDBC to access external, JDBC-compliant resources. The StreamBase Adapter for JDBC is documented in an HTML file installed with the separate kit. By default the jdbc.html file is installed in:

    /opt/streambase/doc/adapter

    C:\Program Files\StreamBase Systems\StreamBase\doc\adapter

    Customers who wish to access legacy ODBC data sources where JDBC drivers are not available can use a JDBC to ODBC Bridge. StreamBase Systems recommends the bridge that is shipped as a standard component of the Java platform. For more information, visit http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/getstart/bridge.doc.html

    Note that the ODBC-related <data-sources> ... </data-sources> section of the StreamBase Server sbd.sbconf configuration file is no longer provided. If you used this section in prior releases of StreamBase, it is ignored by StreamBase 3.0 and subsequent releases.

  • Previously in the StreamBase expression language, a field divided by an integer constant resulted in an int data type. Starting in StreamBase 3.0, this division results in a double data type. After you open a pre-3.0 StreamBase application, you may notice that one or more of the operators that formerly passed typechecking now fails (red icon indicator). The Typecheck view may show a message that is similar to the following: "...operator "if" is incompatible with operand types (bool, int, double)". For example, assume you have an int field named Count in a Map operator, and the Output Settings for a new field named RowNumber has this expression:

    if Count < 101 then 1 else (Count / 100) + 1
    

    You could correct this data type incompatibility by changing the expression to:

    if Count < 101 then 1.0 else (Count / 100) + 1
    
  • If you are upgrading from a previous version of StreamBase and you have projects that contain imported Java JAR files, check the projects' sbd.sbconf configuration files. In particular, change any references to the Java JRE or unsupported JDK versions, and point instead to one of the supported JDK installations listed in the Supported Configurations topic. If necessary, reinstall your Java software.

  • Prior versions of StreamBase installed redundant JAR files named sbclient.jar and sbclient-all.jar. These two JARs contained the same set of files. Starting with this release, we no longer install the sbclient-all.jar file. Please check your scripts. If necessary, please change any sbclient-all.jar references to sbclient.jar.

  • In the StreamBase Studio Test/Debug perspective, the Manual Enqueue View has been renamed to Manual Input. The functionality of the view is unchanged. For more information, please see the Manual Input View topic in the Test/Debug Guide.

  • There is a new adapter for StreamBase applications on Windows and Linux environments: the StreamBase Adapter for EMS/JMS. It allows StreamBase to integrate with a EMS/JMS compliant message bus. The Java Message Service (JMS) API is a Java Message Oriented Middleware (MOM) API for sending messages between two or more clients. Enterprise Messaging Service (EMS) is a messaging platform offered by TIBCO.

    Like other StreamBase adapters, the StreamBase Adapter for EMS/JMS is available in a separate kit. After the installation, the documentation resides in streambase-install-dir/doc/adapter/ems-adapter.html. For information about the StreamBase adapters, or a custom adapter that you may need, please Contact Information your StreamBase Systems representative.

  • If you upgrade StreamBase to version 3.0, you may need to delete and reimport some sample applications. If in your earlier StreamBase installation you imported any of the sample applications or tutorial modules that includes compiled Java or C++ functions, the sample applications may not typecheck or may not run under StreamBase 3.0 and later versions. For example your application diagram might display red typecheck error indicators, without a clear explanation of the cause.

    Before using them, you should delete any of the following sample projects in StreamBase Studio that were imported in a previous release: Then import them normally, using the ImportSamples command.

    • buffering

    • client

    • compliance

    • custom-aggregate-function

    • custom-java-aggregate

    • custom-java-function

    • custom-simple-function

    • feedmonitor

    • feedproc

    • javaoperator

    • tutorial/module2

    • tutorial/module4

  • A new StreamBase command, sbhelp, supports the new StreamBase Help Viewer, described in the next item. The command is documented in the sbhelp topic in the Command Reference.

  • A new Help viewer is now available that you can run independently of StreamBase Studio. The StreamBase Help Viewer is a full-featured help browser that closely resembles the Dynamic Help tool in StreamBase Studio. To open the StreamBase Help Viewer:

    • From the Windows desktop: Click StartAll ProgramsStreamBaseStreamBase Help Viewer

    • From a Linux terminal window or Windows Command Prompt window: Enter the sbhelp command.