IP Library Granted Patent US 7,945,561
Granted Patent B1
US 7,945,561 · App. 12/754,550 · Granted May 17, 2011

Methods and apparatus for processing a query joining tables stored at different data sources

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 7,945,561
App. No.
12/754,550
Granted
May 17, 2011
Kind
B1
Abstract

Methods and apparatus for joining two or more tables are disclosed. A query including a join query is received, where the join query requests that a new table be generated from data obtained from two or more tables, where the two or more tables are stored at two or more data sources. One or more columns for each of the tables for which data is to be obtained are identified from the query. A query plan to execute the query to obtain data for the identified columns from the two or more tables is then generated.

Claims (68)

1. A non-transitory computer-readable storage medium storing thereon computer-readable instructions that, when executed by a processor, cause the processor to execute instructions, comprising:

instructions for performing optimization on an operator tree in accordance with a set of optimization rules;

instructions for restructuring the operator tree in accordance with each of two or more different data sources such that a different segment of the operator tree is associated with each of the two or more different data sources;

instructions for obtaining an operator mapping associated with one of the two or more different data sources;

instructions for determining from the operator mapping whether an operator in the operator tree is supported by the one of the two or more different data sources; and

instructions for instructing the one of the two or more data sources to execute the operator when it is determined from the operator mapping that the operator is supported by the one of the two or more data sources.

2. The computer-readable storage medium as recited in claim 1 , wherein performing optimization on the operator tree comprises:

restructuring the operator tree in accordance with a hierarchy of operators.

3. The computer-readable storage medium as recited in claim 1 , further comprising:

instructions for executing the operator when it is determined from the operator mapping that the operator is not supported by the one of the two or more data sources.

4. The computer-readable storage medium as recited in claim 1 , further comprising:

instructions for restructuring the operator tree such that the operator is within the segment of the operator tree associated with the corresponding one of the two or more data sources when it is determined from the operator mapping that the operator is supported by the one of the two or more data sources; and

wherein the operator remains in its current location in the operator tree when it is determined from the operator mapping that the operator is not supported by the one of the two or more data sources.

5. The computer-readable storage medium as recited in claim 1 , further comprising:

instructions for generating an operator tree from a query, the query being directed to two or more tables, the two or more tables being stored at the two or more different data sources, wherein each of the two or more tables is stored at a single one of the two or more different data sources.

6. The computer-readable storage medium as recited in claim 5 , wherein each of the two or more tables is stored at a different one of the two or more different data sources.

7. A non-transitory computer-readable storage medium storing thereon computer-readable instructions that, when executed by a processor, cause the processor to execute instructions, comprising:

instructions for performing optimization on an operator tree in accordance with a set of optimization rules;

instructions for restructuring the operator tree in accordance with each of two or more different data sources such that a different segment of the operator tree is associated with each of the two or more different data sources;

instructions for obtaining an operator mapping associated with one of the two or more different data sources;

instructions for determining from the operator mapping whether an operator in the operator tree is supported by the one of the two or more different data sources; and

instructions for executing the operator when it is determined from the operator mapping that the operator is not supported by the one of the two or more data sources.

8. The storage medium as recited in claim 7 , wherein performing optimization on the operator tree comprises:

restructuring the operator tree in accordance with a hierarchy of operators.

9. The computer-readable storage medium as recited in claim 7 , wherein restructuring comprises:

determining whether an operator is directed to only one of the two or more different data sources.

10. The computer-readable storage medium as recited in claim 7 , further comprising

instructions for identifying a fragment of the operator tree that relates to only one of the two or more different data sources.

11. The computer-readable storage medium as recited in claim 7 , further comprising:

instructions for pushing operations corresponding to operators in the operator tree to the two or more different data sources.

12. The computer-readable storage medium as recited in claim 11 , further comprising:

instructions for applying an operator mapping for each of the two or more different data sources to identify the operators that are supported by the two or more different data sources.

13. The computer-readable storage medium as recited in claim 7 , further comprising:

instructions for performing one or more operations corresponding to one or more operators in the operator tree external to the two or more different data sources.

14. The computer-readable storage medium as recited in claim 7 , further comprising:

instructions for identifying operations corresponding to operators in the operator tree that are supported by at least one of the two or more different data sources.

15. The computer-readable storage medium as recited in claim 7 , wherein the two or more tables are not in a single database.

16. A method, comprising:

performing optimization on an operator tree in accordance with a set of optimization rules;

restructuring the operator tree in accordance with each of two or more different data sources such that a different segment of the operator tree is associated with each of the two or more different data sources;

obtaining an operator mapping associated with one of the two or more different data sources;

determining from the operator mapping whether an operator in the operator tree is supported by the one of the two or more different data sources; and

executing the operator when it is determined from the operator mapping that the operator is not supported by the one of the two or more data sources.

17. The method as recited in claim 16 , further comprising:

obtaining a query including a join query, the join query requesting that a new table be generated from data obtained from two or more different tables, the two or more different tables being stored at the two or more different data sources, wherein each of the two or more different tables is stored at a single one of the two or more different data sources; and

generating the operator tree from the query.

18. An apparatus for joining two or more tables, comprising:

a processor; and

a memory, at least one of the processor or the memory being adapted for:

performing optimization on an operator tree in accordance with a set of optimization rules;

restructuring the operator tree in accordance with each of two or more different data sources such that a different segment of the operator tree is associated with each of the two or more different data sources;

obtaining an operator mapping associated with one of the two or more different data sources;

determining from the operator mapping whether an operator in the operator tree is supported by the one of the two or more different data sources; and

instructing the one of the two or more data sources to execute the operator when it is determined from the operator mapping that the operator is supported by the one of the two or more data sources.

19. An apparatus, comprising:

means for performing optimization on an operator tree in accordance with a set of optimization rules;

means for restructuring the operator tree in accordance with each of two or more different data sources such that a different segment of the operator tree is associated with each of the two or more different data sources;

means for obtaining an operator mapping associated with one of the two or more different data sources;

means for determining from the operator mapping whether an operator in the operator tree is supported by the one of the two or more different data sources; and

means for executing the operator by the one of the two or more different data sources when it is determined from the operator mapping that the operator is supported by the one of the two or more data sources.

20. An apparatus, comprising:

means for performing optimization on an operator tree in accordance with a set of optimization rules;

means for restructuring the operator tree in accordance with each of two or more different data sources such that a different segment of the operator tree is associated with each of the two or more different data sources; and

means for executing by each of the two or more different data sources operators in the corresponding segment of the operator tree that are supported by the corresponding one of the two or more different data sources.

21. The apparatus as recited in claim 20 , further comprising:

means for instructing each of the two or more different data sources to execute operators in the segment of the operator tree that are supported by the corresponding one of the two or more different data sources.

22. The apparatus as recited in claim 20 , further comprising:

means for pushing operations corresponding to operators in the operator tree to the two or more different data sources.

Assignments (5)
MERGER Recorded Oct 12, 2018
From: ACTUATE CORPORATION
To: OPEN TEXT HOLDINGS, INC.
Reel/Frame 047152/0937 →
OFFICER'S CERTIFICATE Recorded Jul 17, 2015
From: ACTUATE CORPORATION
To: OPEN TEXT CORPORATION
Reel/Frame 036128/0131 →
RELEASE OF SECURITY INTEREST Recorded Aug 29, 2013
From: WELLS FARGO CAPITAL FINANCE LLC
To: ACTUATE CORPORATION; ACTUATE INTERNATIONAL CORPORATION; XENOS IP PARTNERSHIP
Reel/Frame 031111/0038 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND ASSIGNOR'S NAME PREVIOUSLY RECORDED ON REEL 024212 FRAME 0823. ASSIGNOR(S) HEREBY CONFIRMS THE SECOND ASSIGNOR'S NAME SHOULD BE CHANGED FROM -- VENKATARAMAN, VENKATESWARAN-- TO "IYER, VENKATESWARAN VENKATARAMAN". Recorded Sep 21, 2010
From: LI, WENFENG; IYER, VENKATESWARAN VENKATARAMAN; YAN, HOUQIANG; KULKARNI, ANEESH M.; LAI, PETER; OGUNSHOLA, AJIBAYO O.O.A.
To: ACTUATE CORPORATION
Reel/Frame 025021/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2010
From: LI, WENFENG; VENKATARAMAN, VENKATESWARAN; YAN, HOUQIANG; KULKARNI, ANEESH M.; LAI, PETER; OGUNSHOLA, AJIBAYO O.O.A.
To: ACTUATE CORPORATION
Reel/Frame 024212/0823 →