Exclusive: Coral8 presents a sea of CEP opportunity
Coral8 Engine 4.6 speeds deployment of complex event processing with easy SQL-like programming
Coral8 provides input adapters for binary and XML feeds, Java Message Service (pub/sub topics only), databases (via JDBC and ODBC), Tibco Rendezvous, RSS, and more. The company recently added an adapter for tapping IBM WebSphere MQ. In all, the included adapters are adequate, and several third-party adapters are available.
As I created my project, Coral8 Studio created a matching graphical flow diagram on-screen. The resulting map revealed the logical process routing and allowed me to directly drill down into subprocesses, a nice touch. Selecting an element in the diagram revealed its underlying CCL code for easy review and direct modification. During simulation testing, the diagram came alive with basic I/O metrics.
Debugging was light in the absence of breakpoints or watch lists, but I was able to view, sort, and step through streams. Accelerated playback is a good feature. And though I could not save a stream history to a file directly, I could copy and paste stream data from the stream viewer window.
The built-in monitors of CPU utilization, memory usage, and messages were helpful in determining capacity specs, but they are less than adequate for real-world runtime monitoring. You get resource metrics for the entire system, but not for individual queries, and the message information is limited to number of messages sent. Furthermore, enterprise monitoring is available only via SNMP — not via the Studio interface. (Editor's note: Latency statistics and an SNMP adapter that will allow you to incorporate runtime metrics directly into processes are listed among the improvements in version 4.8.)
On the plus side, CCL is both powerful and easy to use. Developers get great constructs for aggregating data sets and managing data windows — supporting various time- and frequency-based groupings. Actual pattern-matching constructs could be bolstered, but newly added support for unlimited subqueries is beneficial. Coral8 also provides for design time specification over how the engine manages issues such as delivery guarantee, as well as out-of-order and delayed messages.
Another nice feature here is the ability to pass parameters to query modules — rather than hard-coding them — making for greater runtime flexibility and easier repurposing of query sets.
Coral8 includes some basic, prebuilt functions for general math, string manipulation, and XPath and XML processing. The SDK allows you to build your own functions in C/C++, as well as to tap Java, C#, and Perl for out-of-process adapters. Python is also available but currently undocumented.
Although most of Coral8’s work is typically done in memory, the architecture supports persistence and can push and pull data from external databases to extend the power of queries.
The Enterprise version of Coral8 offers additional benefits by way of basic fail-over protection and clustering of query containers – although a more advanced load-balancing implementation would be useful in spreading the work. This C-based engine (in contrast to the more prevalent Java-based engines in the market) showed no lag during testing.
Extending the reef
In addition to fleshing out the built-in monitoring facilities, I would like to see Coral8 add an admin GUI for managing Coral8 servers and containers. The required hand-tooling of XML configuration files will grow unwieldy in all but the most simplistic of setups.
Looking ahead, I found the preview of a forthcoming BPEL-to-CCL wizard quite promising. The tool reads in BPEL-based BPM process definitions, meshes it with your Coral8 schema definitions, and generates a native CCL query module. The ability to put Coral8 to work monitoring business processes has tremendous potential for improving business outcomes.
Coral8 Engine offers a powerful means of scanning real-time data streams for business meaning and facilitating immediate action. Despite some shortcomings in this still-maturing product’s feature set, the easy-to-use tools and comfortable programming language will get development teams moving. This is a solid CEP solution with the potential to quickly and affordably bring real-time intelligence to your business.