Recent posts
- What's a CEP engine, anyway?
- Webinar: Third Generation Algorithmic Trading & Execution with Complex Event Processing
- On Streaming SQL Standards
- Webinar: Real Time Risk, Profit & Loss Applications
- Webinar: Real Time Risk, Profit & Loss Applications
- Is CEP Mature? Or a Curious Case of Information Asymmetry
- What Makes a Programming Language Successful?
- Complexity Scorecard
- More on CEP and Complexity
- What makes a Coral8 Expert?
Syndication
What makes a Coral8 Expert?
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
- Design Patterns
http://www.coral8.com/system/files/assets/pdf/Coral8DesignPatterns.pdf - Cookbook
http://www.coral8.com/system/files/assets/pdf/5.2.0/CCL%20Cookbook.pdf
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
- Mark's blog
- Login or register to post comments
