Internal Parallelization

CCL semantics specify that rows be kept in order and processed based on their row timestamps. However, with concurrency enabled, a remote database query can cause the server to issue multiple concurrent database requests on different connections.

These remote queries may not return their results in the same chronological order as the requests were issued. For example, suppose that remote database request "alpha" is issued at 10:00:00, while request "beta" is issued at 10:00:01. Sybase CEP Server may receive the results of the "beta" query before receiving the results of the "alpha" query if the remote server fulfills the "alpha" request in 3 seconds and the "beta" request in 1 second, or if the Sybase CEP Server cache already contains the results of a previous request for beta data. In this case, Sybase CEP Server stores the "beta" remote query results until it receives the "alpha" remote query results and process the rows that needed the data. The server then moves on to process the later rows (those that issued the "beta" request).

Sybase CEP Server ensures that eachinput row is processed in order regardless of whether its requests took a longer or shorter time than other requests issued around the same time. Later input rows have to wait for earlier input rows to be processed. Rows are never processed out of order. The output is the same regardless of when remotely-requested data arrives. When rows first arrive at the server, they may be re-ordered if the input stream has the MaxDelay or OutOfOrder properties set to allow re-ordering. However, once the data is "inside" the server, the server does not re-order the rows.