# US 2018/0210938 A1 · Safe synchronization of parallel data operator trees

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0210938 A1
- Document ID: US20180210938A1
- Status: Published application
- Kind: A1
- Application number: 15/934,755
- Filed: 2018-03-23
- Published: 2018-07-26
- Earliest claimed: 2014-01-31
- Assignees: Sybase, Inc.
- Applicants: Sybase, Inc.
- Inventors: Daniel James Farrar; Evguenia Eflov
- Web page: https://patentgrep.com/patent/US20180210938A1

## CPC

- G06F 16/275: {Synchronous replication}
- G06F 9/52: Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F 16/21: Design, administration or maintenance of databases
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An operator tree is formed for a data processing plan, the operator tree containing a plurality of interconnected nodes arid including a grouping of two or more duplicative portions, each of the two or more duplicative portions having identical nodes and structure such that when the operator tree is executed, operators executed in a first duplicative portion using a first thread perform same functions use different data than operators in a second duplicative portion using a second thread. One or more operators in the first portion and one or more operators in the second portion to be synchronized with each other are identified. A synchronization point is created for the identified operators in the first thread and one or more subsequent threads, wherein the synchronization point receives information from each of the identified operators to build an artifact to deliver to one or more operators that depend on the artifact.

## Claims

### Claim 1

A method for performing data processing operations in parallel, the method comprising:
forming, using one or more hardware processors, an operator tree for a data processing plan, the operator tree containing a plurality of interconnected nodes, the operator tree including a grouping of two or more parallel portions;
identifying one or more operators represented by a first parallel portion of the two or more parallel portions of the operator tree and one or more operators represented by a second parallel portion of the two or more parallel portions of the operator tree to be synchronized with each other; and
creating a synchronization point for synchronized thread operators in a first thread and one or more subsequent threads that correspond to the identified operators represented by the operator tree, the synchronized thread operators being executed prior to a last operation of the corresponding thread;
receiving, by the synchronization point, information from each of the synchronized thread operators;
building, by the synchronization point, an artifact prior to a create process completion, the artifact being available to one or more dependent thread operators of the first thread and the one or more subsequent threads, the one or more dependent thread operators being dependent on the artifact;
maintaining the artifact until the synchronized thread operators no longer need access to shared data.

### Claim 2 (depends on 1)

The method of claim 1, wherein the forming incudes:
constructing the data processing plan in the form of the operator tree;
identifying the first parallel portion of the operator tree; and
duplicating the first parallel portion of the operator tree to form the second parallel portion of the operator tree.

### Claim 3 (depends on 1)

The method of claim 1, wherein foe operator tree further includes a third parallel portion such that when the operator tree is executed, operators corresponding to the third parallel portion using die first thread perform same functions as operators corresponding to the third parallel portion using a third thread, wherein the operators corresponding to the third parallel portion use different data than operators corresponding to the first parallel portion, the identifying further includes identifying one or more operators corresponding to the third parallel portion to be synchronized with foe identified operators corresponding to the first parallel portion arid the operators in the second parallel portion, and the creating including creating a synchronization point for the identified operators corresponding to the first, second, and third threads.

### Claim 4 (depends on 2)

The method of claim 2, further comprising constructing the data processing plan from a database query.

### Claim 5 (depends on 4)

The method of claim 4, wherein the constructing the data processing plan from the database query includes parsing a data processing request into data processing operators.

### Claim 6 (depends on 1)

The method of claim 1, further composing creating a synchronization point client for each of the synchronized thread operators, the synchronization point client, when called by a corresponding thread, interacts with the synchronization point to deliver the information.

### Claim 7 (depends on 6)

The method of claim 6, an end of each branch of execution is defined by a merging of parallel branches of execution.

### Claim 8 (depends on 1)

The method of claim 1, wherein the synchronization point is further based on a dependency between a lower layer of foe first parallel portion and at least another branch of the two or more parallel portions.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
determining if an operator at a lower level than one of the synchronized thread operators has completed operation; and
in response to a determination that the operator at the lower level has not completed operation, teleporting to the operator at the lower level prior to completing building the artifact at the synchronization point.

### Claim 10

A system comprising:
one or more hardware processors,
memory to store instructions that when executed by the one or more hardware processors perform operations comprising:
forming an operator tree for a data processing plan, the operator tree containing a plurality of interconnected nodes, the operator tree including a grouping of two or more parallel portions;
identifying one or more operators represented by a first parallel portion of the two or more parallel portions of the operator tree and one or more operators represented by a second parallel portion of the two or more parallel portions of the operator tree to be synchronized with each other; and
creating a synchronization point for synchronized thread operators in a first thread and one or more subsequent threads that correspond to the identified operators represented by the operator tree, the synchronized thread operators being executed poor to a last operation of the corresponding thread;
receiving, by the synchronization point, Information from each of the synchronized thread operators;
building, by the synchronization point, an artifact prior to a create process completion, the artifact being available to one or more dependent thread operators of the first thread and the one or more subsequent threads, the one or more dependent thread operators being dependent on the artifact;
maintaining the artifact until the synchronized thread operators no longer need access to shared data.

### Claim 11 (depends on 10)

The system of claim 10, wherein the forming incudes:
constructing the data, processing plan in the form of the operator tree;
identifying the first parallel portion of the operator tree; and
duplicating the first parallel portion of the operator tree to form the second parallel portion of the operator tree.

### Claim 12 (depends on 10)

The system of claim 10, wherein the operator tree further includes a third parallel portion such that when the operator tree is executed, operators corresponding to the third parallel portion using the first thread perform same functions as operators corresponding to the third parallel portion using a third thread, wherein the operators corresponding to the third parallel portion use different data than operators corresponding to the first parallel portion, the identifying further includes identifying one or more operators corresponding to the third parallel portion to be synchronized with the identified operators corresponding to foe first parallel portion and the operators in the second parallel portion, and the creating including creating a. synchronization point for the identified operators corresponding to the first, second, and third threads.

### Claim 13 (depends on 11)

The system of claim 11, the operations further comprising constructing the data processing plan from a database query.

### Claim 14 (depends on 13)

The system of claim 13, wherein the constructing the data processing plan from the database query includes parsing a data processing request into data processing operators.

### Claim 15 (depends on 10)

The system of claim 10, the operations further comprising creating a synchronization point client for each of the synchronized thread operators, the synchronization point client, when called by a corresponding thread, interacts with the synchronization point to deliver the information.

### Claim 16 (depends on 15)

The system of claim 15, an end of each branch of execution is defined by a merging of parallel branches of execution.

### Claim 17 (depends on 10)

The system of claim 10, wherein the synchronization point is further based on a dependency between a lower layer of the first parallel portion and at least another branch of the two or more parallel portions.

### Claim 18 (depends on 10)

The system of claim 10, the operations further comprising:
determining if an operator at a lower level than one of the synchronized thread operators has completed operation; and
in response to a determination that the operator at the lower level has not completed operation, teleporting to the operator at the lower level prior to completing building the artifact at the synchronization point.

### Claim 19

A non-transitory machine-readable storage medium comprising instructions, which when implemented by one or more machines, cause the one or more machines to perform operations comprising:
forming an operator tree for a data processing plan, the operator tree containing a plurality of interconnected nodes, the operator tree including a grouping of two or more parallel portions;
identifying one or more operators represented by a first parallel portion of the two or more parallel portions of the operator tree and one or more operators represented by a second parallel portion of the two or more parallel portions of the operator tree to be synchronized with each other; and
creating a synchronization point for synchronized thread operators in a first thread and one or more subsequent threads that correspond to the identified operators represented by the operator tree, the synchronized thread operators being executed prior to a last operation of the corresponding thread,
receiving, by the synchronization point, information from each of the synchronized thread operators;
building, by foe synchronization point, an artifact prior to a create process completion, the artifact being available to one or more dependent thread operators of the first thread and the one or more subsequent threads, the one or more dependent thread operators being dependent on the artifact;
maintaining the artifact until the synchronized thread operators no longer need access to shared data.

### Claim 20 (depends on 19)

The non-transitory machine-readable storage medium of claim 19, wherein the forming incudes:
constructing the data processing plan in the form of the operator tree;
identifying the first parallel portion of the operator tree that can be run in parallel; and
duplicating the first parallel portion of the operator tree to form the second parallel portion in the operator tree.
