What makes a Coral8 Expert?

Coral8 is easy to use. Your probably have heard me say this once or twice. Indeed, people have been known to download our product, and create a simple application within hours.

At the same time, many production Coral8 applications are quite complex, and to build these powerful applications one needs a certain amount of knowledge and expertise. This is true of any CEP engine or any powerful enterprise system. So I am asked more and more often by customers and partners: What makes a Coral8 expert? How do we train our employees to best take advantage of Coral8?

We don't have a formal "Coral8 Certification" course yet, but I thought I'd put together a list of areas where one needs to develop expertise to be considered a true Coral8 expert. Of course, the list is not meant to scare anybody away. Plenty of people use Coral8 successfully without understanding 20% of these topics. But if you want to become a Coral8 Systems Integrator Partner, then here is what you need to know:

CCL

Windows

  • Different kinds of windows (time-based, row-based, sliding, jumping, largest/smallest, partitioned (PER), multi-policy, bucketc, etc.)
  • Named windows and implicit windows
  • Using aggregations and windows
  • Using windows to keep and manage state
  • Querying windows (public windows)

Joins

  • Stream to Window join
  • Window to Window joins
  • Outer joins

Patterns

  • Basic pattern operators ([], ",", ||, &&, !)
  • Nested patterns
  • Causality tracking (XMLPatternMatch())

XML

  • XML datatype
  • Working with XML: parsing, constructing, transforming, joining, etc.

Modules

  • Using modules for abstraction and code reuse
  • Module interface: input/output streams and parameters

Procedural features

  • functions
  • variables
  • conditionals
  • loops

User-Defined Functions

  • Calling scalar user-defined functions written C
  • Calling aggregation user-defined functions written in C
  • Calling RPC style user-defined functions

Design patterns and basic recipes

Integrations with databases

  • Reading data from a database using database subqueries in CCL
  • Writing data into a database using EXECUTE STATEMENT
  • Configuring database connections
  • Caching
  • Performance and reliability options
  • Using adapters to play back data from databases

Messaging layer

  • stream URL
  • publish/subscribe
  • timestamp assignment: message timestamp vs server timestamp
  • delayed messages and synchronization across multiple streams
  • out-of-order message handling

Adapters

  • Adapters shipped with the product (message bus, database, file, socket, specialty, etc.)
  • In-process vs. out-of-process adapters
  • Writing adapter in C/C++, Java, .NET, Perl, Python

Enterprise features

  • State Persistence
  • High Availability: different options
  • Guaranteed Message Delivery
  • Combining all Persistence, HA, and GD to meet the requirements
  • Clustering for performance and failover
  • Security: SSL encryption, authentication, authorization, integration with LDAP and other systems

Performance

  • How to maximize throughput of Coral8 Engine
  • How to minimize latency of Coral8 Engine
  • How to write high-performance adapters
  • How to take advantage of multiple CPUs or cores
  • Hot to take advantage of clustering by splitting streams or queries across machines.

Studio

  • Creating CCL projects and modules
  • Using environment files to manage connections to workspaces
  • Monitoring server performance, throughput, latency and resources through the Studio

Development processes

  • Using multiple workspaces for development, QA, production, etc.
  • Using source control
  • Upgrading the server & studio from one version to the next

Command-line tools and their options

  • c8_compiler to compile CCL
  • c8_client to manage the server, pub/sub to streams, submit queries dynamically, etc.

Portal

  • Setting up the Portal
  • Creating query templates for use with the Portal
  • Different visualization options
  • Actions

That's it! Not too scary, is it?

Mark Tsimelzon, President & CTO, Coral8