IP Library › Granted Patent US 11,573,965
Granted Patent B2
US 11,573,965 · App. 15/701,019 · Granted Feb 7, 2023

Data partitioning and parallelism in a distributed event processing system

Inventors: Herbert Stiel (San Francisco, CA); Hoyong Park (San Jose, CA); Sandeep Bishnoi (Mill Valley, CA); Prabhu Thukkaram (San Ramon, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F16/24568G06F8/35G06F9/542G06F16/21G06F16/248G06F16/24532G06F16/278G06F16/9024G06F16/90335G06F16/2433
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,573,965
App. No.
15/701,019
Granted
Feb 7, 2023
Kind
B2
Abstract

An event processing system for processing events in an event stream is disclosed. The system is configured for determining a stage for a continuous query language (CQL) query being processed by an event processing system and/or determining a stage type associated with the stage. The system is also configured for determining a transformation to be computed for the stage based at least in part on the stage type and/or determining a classification for the CQL query based at least in part on a plurality of rules. The system can also be configured for generating a transformation in a Directly Acyclic Graph (DAG) of a data transformation pipeline for the stage based at least in part on the partitioning criteria for the stage. In some examples, the system can also be configured for determining a partitioning of the stage based at least in part on the transformation.

Claims (55)

1. A method comprising:

determining a stage for a continuous query language (CQL) query being processed by an event processing system;

determining a stage type associated with the stage;

determining a transformation to be computed for the stage based at least in part on the stage type;

determining a classification for the CQL query based at least in part on a plurality of rules;

in accordance with a determination that the classification for the CQL query is stateless, marking the stage as a partitioned stage;

in accordance with a determination that the classification for the CQL query is stateful, marking the stage as a non-partitioned stage;

in response to marking the stage as a partitioned stage:

generating a first transformation in a first Directed Acyclic Graph (DAG) of a data transformation pipeline for the partitioned stage without a repartitioning transformation; and

in response to marking the stage as a non-partitioned stage:

generating a second transformation for the non-partitioned stage in a second Directed Acyclic Graph with a repartitioning transformation followed by a stage transformation; and

inputting a partitioning attribute and a number of partitions into the repartitioning transformation.

2. The method of claim 1 , wherein determining the transformation to be computed for the stage comprises parsing the CQL query into one or more tokens.

3. The method of claim 1 , wherein the plurality of rules comprise rules to classify the CQL query into at least one of a stateless query, a semi stateful query, or a fully stateful query.

4. The method of claim 1 , further comprising, responsive to marking the stage as a partitioned stage or a non-partitioned stage, applying partitioning criteria to the stage, wherein the partitioning criteria comprises one or more partitioning attributes.

5. The method of claim 4 , further comprising performing a semantic analysis of the CQL query.

6. The method of claim 5 , wherein the one or more partitioning attributes are determined based at least in part on the semantic analysis of the CQL query.

7. The method of claim 1 , further comprising traversing the data transformation pipeline from a source of the data transformation pipeline to a sink of the data transformation pipeline.

8. The method of claim 1 , wherein in response to marking the stage as a partitioned stage, determining a number of partitions for the stage based at least in part on the number of partitions from a previous stage.

9. A system, comprising:

a memory configured to store computer-executable instructions; and

a processor configured to access the memory and execute the computer-executable instructions to:

determine a stage for a continuous query language (CQL) query being processed by an event processing system;

determine a stage type associated with the stage;

determine a transformation to be computed for the stage based at least in part on the stage type;

determine a classification for the CQL query based at least in part on a plurality of rules;

in accordance with a determination that the classification for the CQL query is stateless, mark the stage as a partitioned stage;

in accordance with a determination that the classification for the CQL query is stateful, mark the stage as a non-partitioned stage;

in response to marking the stage as a partitioned stage:

determine a first transformation in a first Directed Acyclic Graph (DAG) of a data transformation pipeline for the partitioned stage without a repartitioning transformation; and

in response to marking the stage as a non-partitioned stage:

determine a second transformation for the non-partitioned stage in a second Directed Acyclic Graph with a repartitioning transformation followed by a stage transformation; and

input a partitioning attribute and a number of partitions into the repartitioning transformation.

10. The system of claim 9 , wherein determining the transformation to be computed for the stage comprises parsing the CQL query into one or more tokens.

11. The system of claim 9 , wherein the plurality of rules comprise rules to classify the CQL query into at least one of a stateless query, a semi stateful query, or a fully stateful query.

12. The system of claim 9 , further comprising, responsive to marking the stage as a partitioned stage or a non-partitioned stage, applying partitioning criteria to the stage, wherein the partitioning criteria comprises one or more partitioning attributes.

13. The system of claim 12 , wherein the computer-executable instructions are further executed to perform a semantic analysis of the CQL query.

14. The system of claim 13 , wherein the one or more partitioning attributes are determined based at least in part on the semantic analysis of the CQL query.

15. The system of claim 9 , wherein the computer-executable instructions are further executed to traverse the data transformation pipeline from a source of the data transformation pipeline to a sink of the data transformation pipeline.

16. A non-transitory computer-readable medium storing computer-executable code that, when executed by a processor, cause the processor to perform operations comprising:

determining a stage for a continuous query language (CQL) query being processed by an event processing system;

determining a stage type associated with the stage;

determining a transformation to be computed for the stage based at least in part on the stage type;

determining a classification for the CQL query based at least in part on a plurality of rules;

in accordance with a determination that the classification for the CQL query is stateless, marking the stage as a partitioned stage;

in accordance with a determination that the classification for the CQL query is stateful, marking the stage as a non-partitioned stage;

in response to marking the stage as a partitioned stage:

generating a first transformation in a Directed Acyclic Graph (DAG) of a data transformation pipeline for the partitioned stage without a repartitioning transformation; and

in response to marking the stage as a non-partitioned stage:

generating a second transformation for the non-partitioned stage in a second Directed Acyclic Graph with a repartitioning transformation followed by a stage transformation; and

inputting a partitioning attribute and a number of partitions into the repartitioning transformation.

17. The non-transitory computer-readable medium of claim 16 , wherein determining the transformation to be computed for the stage comprises parsing the CQL query into one or more tokens.

18. The non-transitory computer-readable medium of claim 16 , wherein the plurality of rules comprise rules to classify the CQL query into at least one of a stateless query, a semi stateful query, or a fully stateful query.

19. The non-transitory computer-readable medium of claim 16 , further comprising, responsive to marking the stage as a partitioned stage or a non-partitioned stage, applying partitioning criteria to the stage, wherein the partitioning criteria comprises one or more partitioning attributes.

20. The non-transitory computer-readable medium of claim 19 , wherein the operations further comprise performing a semantic analysis of the CQL query, and wherein the one or more partitioning attributes are determined based at least in part on the semantic analysis of the CQL query.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2017
From: STIEL, HERBERT; PARK, HOYONG; BISHNOI, SANDEEP; THUKKARAM, PRABHU
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 043615/0173 →
Continuity (2)
Provisional Application 62395216 · Sep 15, 2016
Related Publication 20180075125A1 · Mar 15, 2018
Cited By (1)
US 12,287,794