Esper - Event Stream and Complex Event Processing for Java
Next
Esper - Event Stream and Complex Event Processing for Java
Reference Documentation
2.0.0
Copyright © 2007 EsperTech Inc.
Table of Contents
Preface
1. Technology Overview
1.1. Introduction to CEP and event stream analysis
1.2. CEP and relational databases
1.3. The Esper engine for CEP
1.4. Required 3rd Party Libraries
2. Event Representations
2.1. Event Underlying Java Objects
2.2. Event Properties
2.3. Dynamic Event Properties
2.4. Plain-Old Java Object Events
2.4.1. Java Object Event Properties
2.5. java.util.Map Events
2.5.1. Map-Within-Map Nested Events
2.6. org.w3c.dom.Node XML Events
3. Processing Model
3.1. Introduction
3.2. Insert Stream
3.3. Insert and Remove Stream
3.4. Filters and Where-clauses
3.5. Time Windows
3.5.1. Time Window
3.5.2. Time Batch
3.6. Batch Windows
3.7. Aggregation and Grouping
3.7.1. Insert and Remove Stream
3.7.2. Output for Aggregation and Group-By
3.7.2.1. Un-aggregated and Un-grouped
3.7.2.2. Fully Aggregated and Un-grouped
3.7.2.3. Aggregated and Un-Grouped
3.7.2.4. Fully Aggregated and Grouped
3.7.2.5. Aggregated and Grouped
3.8. EventBean Query Results
4. EPL Reference: Clauses
4.1. EPL Introduction
4.2. EPL Syntax
4.2.1. Specifying Time Periods
4.2.2. Using Comments
4.3. Choosing Event Properties And Events: the Select Clause
4.3.1. Choosing all event properties: select *
4.3.2. Choosing specific event properties
4.3.3. Expressions
4.3.4. Renaming event properties
4.3.5. Choosing event properties and events in a join
4.3.6. Choosing event properties and events from a pattern
4.3.7. Selecting insert and remove stream events
4.4. Specifying Event Streams: the From Clause
4.4.1. Filter-based Event Streams
4.4.1.1. Specifying an event type
4.4.1.2. Specifying filter criteria
4.4.1.3. Filtering Ranges
4.4.1.4. Filtering Sets of Values
4.4.1.5. Filter Limitations
4.4.2. Pattern-based Event Streams
4.4.3. Specifying Views
4.4.4. Using the Stream Name
4.5. Specifying Search Conditions: the Where Clause
4.6. Aggregates and grouping: the Group-by Clause and the Having Clause
4.6.1. Using aggregate functions
4.6.2. Organizing statement results into groups: the Group-by clause
4.6.3. Selecting groups of events: the Having clause
4.6.4. How the stream filter, Where, Group By and Having clauses interact
4.6.5. Comparing the Group By clause and the std:groupby view
4.7. Stabilizing and Limiting Output: the Output Clause
4.7.1. Output Clause Options
4.7.2. Aggregation, Group By, Having and Output clause interaction
4.7.3. Runtime Considerations
4.8. Sorting Output: the Order By Clause
4.9. Merging Streams and Continuous Insertion: the Insert Into Clause
4.10. Joining Event Streams
4.11. Outer Joins
4.12. Unidirectional Joins and Outer Joins
4.13. Subqueries
4.13.1. The 'exists' keyword
4.13.2. The 'in' keyword
4.14. Joining Relational Data via SQL
4.14.1. Joining SQL Query Results
4.14.2. SQL Query and the EPL Where Clause
4.14.3. Outer Joins With SQL Queries
4.14.4. Using Patterns to Request (Poll) Data
4.14.5. JDBC Implementation Overview
4.14.6. Oracle Drivers and No-Metadata Workaround
4.15. Joining Non-Relational Data via Method Invocation
4.15.1. Joining Method Invocation Results
4.15.2. Providing the Method
4.15.3. Using a Map Return Type
4.16. Creating and Using Named Windows
4.16.1. Creating Named Windows: the Create Window clause
4.16.2. Deleting From Named Windows: the On Delete clause
4.16.2.1. Using Patterns in the On Delete Clause
4.16.3. Inserting Into Named Windows
4.16.4. Selecting From Named Windows
4.16.5. Triggered Select on Named Windows: the On Select clause
4.16.6. Triggered Playback from Named Windows: the On Insert clause
4.17. Variables
4.17.1. Creating Variables: the Create Variable clause
4.17.2. Setting Variable Values: the On Set clause
4.17.3. Using Variables
5. EPL Reference: Patterns
5.1. Event Pattern Overview
5.2. How to use Patterns
5.2.1. Pattern Syntax
5.2.2. Subscribing to Pattern Events
5.2.3. Pulling Data from Patterns
5.3. Operator Precedence
5.4. Filter Expressions In Patterns
5.5. Pattern Operators
5.5.1. Every
5.5.1.1. Every Operator Example
5.5.1.2. Sensor Example
5.5.2. And
5.5.3. Or
5.5.4. Not
5.5.5. Followed-by
5.6. Pattern Guards
5.6.1. timer:within
5.7. Pattern Observers
5.7.1. timer:interval
5.7.2. timer:at
6. EPL Reference: Operators
6.1. Arithmetic Operators
6.2. Logical And Comparsion Operators
6.3. Concatenation Operators
6.4. Binary Operators
6.5. Array Definition Operator
6.6. The 'in' Keyword
6.7. The 'between' Keyword
6.8. The 'like' Keyword
6.9. The 'regexp' Keyword
7. EPL Reference: Functions
7.1. Single-row Function Reference
7.1.1. The Case Control Flow Function
7.1.2. The Cast Function
7.1.3. The Coalesce Function
7.1.4. The Current_Timestamp Function
7.1.5. The Exists Function
7.1.6. The Instance-Of Function
7.1.7. The Min and Max Functions
7.1.8. The Previous Function
7.1.8.1. Previous Event per Group
7.1.8.2. Restrictions
7.1.8.3. Comparison to the prior Function
7.1.9. The Prior Function
7.2. Aggregate Functions
7.3. User-Defined Functions
8. EPL Reference: Views
8.1. Window views
8.1.1. Length window (win:length)
8.1.2. Length batch window (win:length_batch)
8.1.3. Time window (win:time)
8.1.4. Externally-timed window (win:ext_timed)
8.1.5. Time batch window (win:time_batch)
8.1.6. Time-Length combination batch window (win:time_length_batch)
8.1.7. Time-Accumulating window (win:time_accum)
8.1.8. Keep-All window (win:keepall)
8.2. Standard view set
8.2.1. Unique (std:unique)
8.2.2. Group-By (std:groupby)
8.2.3. Size (std:size)
8.2.4. Last Event (std:lastevent)
8.3. Statistics views
8.3.1. Univariate statistics (stat:uni)
8.3.2. Regression (stat:linest)
8.3.3. Correlation (stat:correl)
8.3.4. Weighted average (stat:weighted_avg)
8.3.5. Multi-dimensional statistics (stat:cube)
8.4. Extension View Set
8.4.1. Sorted Window View (ext:sort)
8.4.2. Time-Order View (ext:time_order)
9. API Reference
9.1. API Overview
9.2. Engine Instances
9.3. The Administrative Interface
9.3.1. Creating Statements
9.3.2. Receiving Statement Results
9.3.3. Setting a Subscriber Object
9.3.3.1. Row-By-Row Delivery
9.3.3.2. Multi-Row Delivery
9.3.4. Adding Listeners
9.3.5. Using Iterators
9.3.6. Managing Statements
9.3.7. Runtime Engine Configuration
9.4. The Runtime Interface
9.4.1. Receiving Unmatched Events
9.4.2. Emit Facility for Publish-Subscribe
9.5. Events Received from the Engine
9.6. Engine Threading and Concurrency
9.7. Time-Keeping Events
9.8. Time Resolution
9.9. Statement Object Model
9.9.1. Building an Object Model
9.9.2. Building Expressions
9.9.3. Building a Pattern Statement
9.9.4. Building a Select Statement
9.9.5. Building a Create-Variable and On-Set Statement
9.9.6. Building Create-Window, On-Delete and On-Select Statements
9.10. Prepared Statement and Substitution Parameters
10. Configuration
10.1. Programmatic Configuration
10.2. Configuration via XML File
10.3. XML Configuration File
10.4. Configuration Items
10.4.1. Events represented by Java Classes
10.4.1.1. Package of Java Event Classes
10.4.1.2. Event type alias to Java class mapping
10.4.1.3. Non-JavaBean and Legacy Java Event Classes
10.4.1.4. Specifying Event Properties for Java Classes
10.4.1.5. Turning off Code Generation
10.4.1.6. Case Sensitivity and Property Names
10.4.2. Events represented by java.util.Map
10.4.3. Events represented by org.w3c.dom.Node
10.4.3.1. Schema Resource
10.4.3.2. XPath Property
10.4.3.3. Absolute or Deep Property Resolution
10.4.4. Class and package imports
10.4.5. Cache Settings for Method Invocations
10.4.6. Variables
10.4.7. Relational Database Access
10.4.7.1. Connections obtained via DataSource
10.4.7.2. Connections obtained via DriverManager
10.4.7.3. Connections-level settings
10.4.7.4. Connections lifecycle settings
10.4.7.5. Cache settings
10.4.7.6. Column Change Case
10.4.7.7. SQL Types Mapping
10.4.7.8. Metadata Origin
10.4.8. Engine Settings related to Concurrency and Threading
10.4.8.1. Preserving the order of events delivered to listeners
10.4.8.2. Preserving the order of events for insert-into streams
10.4.8.3. Internal Timer Settings
10.4.9. Engine Settings related to Event Metadata
10.4.9.1. Java Class Property Names and Case Sensitivity
10.4.10. Engine Settings related to View Resources
10.4.10.1. Sharing View Resources between Statements
10.4.11. Engine Settings related to Logging
10.4.11.1. Execution Path Debug Logging
10.4.12. Engine Settings related to Variables
10.4.12.1. Variable Version Release Interval
10.4.13. Engine Settings related to Stream Selection
10.4.13.1. Default Statement Stream Selection
11. Extension and Plug-in
11.1. Overview
11.2. Custom View Implementation
11.2.1. Implementing a View Factory
11.2.2. Implementing a View
11.2.3. Configuring View Namespace and Name
11.3. Custom Aggregation Functions
11.3.1. Implementing an Aggregation Function
11.3.2. Configuring Aggregation Function Name
11.4. Custom Pattern Guard
11.4.1. Implementing a Guard Factory
11.4.2. Implementing a Guard Class
11.4.3. Configuring Guard Namespace and Name
11.5. Custom Pattern Observer
11.5.1. Implementing an Observer Factory
11.5.2. Implementing an Observer Class
11.5.3. Configuring Observer Namespace and Name
12. Examples, Tutorials, Case Studies
12.1. Examples Overview
12.2. Market Data Feed Monitor
12.2.1. Input Events
12.2.2. Computing Rates Per Feed
12.2.3. Detecting a Fall-off
12.2.4. Event generator
12.3. JMS Server Shell and Client
12.3.1. Overview
12.3.2. JMS Messages as Events
12.3.3. JMX for Remote Dynamic Statement Management
12.4. Transaction 3-Event Challenge
12.4.1. The Events
12.4.2. Combined event
12.4.3. Real time summary data
12.4.4. Find problems
12.4.5. Event generator
12.5. J2EE Self-Service Terminal Management
12.5.1. Events
12.5.2. Detecting Customer Check-in Issues
12.5.3. Absence of Status Events
12.5.4. Activity Summary Data
12.5.5. Sample Application for J2EE Application Server
12.5.5.1. Running the Example
12.5.5.2. Building the Example
12.5.5.3. Running the Event Simulator and Receiver
12.6. Assets Moving Across Zones - An RFID Example
12.7. AutoID RFID Reader generating XML documents
12.8. StockTicker
12.9. MatchMaker
12.10. QualityOfService
12.11. LinearRoad
12.12. StockTick RSI
13. Performance
13.1. Performance Results
13.2. Performance Tips
13.2.1. Understand how to tune your Java virtual machine
13.2.2. Compare Esper to other solutions
13.2.3. Select the underlying event rather than individual fields
13.2.4. Prefer stream-level filtering over post-data-window filtering
13.2.5. Reduce the use of arithmetic in expressions
13.2.6. Consider using EventPropertyGetter for fast access to event properties
13.2.7. Consider casting the underlying event
13.2.8. Turn off logging
13.2.9. Disable view sharing
13.2.10. Disable delivery order guarantees
13.2.11. Performance, JVM, OS and hardware
13.3. Using the performance kit
13.3.1. How to use the performance kit
13.3.2. How we use the performance kit
14. References
14.1. Reference List
A. Output Reference and Samples
A.1. Introduction and Sample Data
A.2. Output for Un-aggregated and Un-grouped Queries
A.2.1. No Output Rate Limiting
A.2.2. Output Rate Limiting - Default
A.2.3. Output Rate Limiting - Last
A.2.4. Output Rate Limiting - First
A.2.5. Output Rate Limiting - Snapshot
A.3. Output for Fully-aggregated and Un-grouped Queries
A.3.1. No Output Rate Limiting
A.3.2. Output Rate Limiting - Default
A.3.3. Output Rate Limiting - Last
A.3.4. Output Rate Limiting - First
A.3.5. Output Rate Limiting - Snapshot
A.4. Output for Aggregated and Un-grouped Queries
A.4.1. No Output Rate Limiting
A.4.2. Output Rate Limiting - Default
A.4.3. Output Rate Limiting - Last
A.4.4. Output Rate Limiting - First
A.4.5. Output Rate Limiting - Snapshot
A.5. Output for Fully-aggregated and Grouped Queries
A.5.1. No Output Rate Limiting
A.5.2. Output Rate Limiting - Default
A.5.3. Output Rate Limiting - All
A.5.4. Output Rate Limiting - Last
A.5.5. Output Rate Limiting - First
A.5.6. Output Rate Limiting - Snapshot
A.6. Output for Aggregated and Grouped Queries
A.6.1. No Output Rate Limiting
A.6.2. Output Rate Limiting - Default
A.6.3. Output Rate Limiting - All
A.6.4. Output Rate Limiting - Last
A.6.5. Output Rate Limiting - First
A.6.6. Output Rate Limiting - Snapshot
Index
© 2007 EsperTech Inc. All Rights Reserved