IP Library Granted Patent US 9,116,954
Granted Patent B1
US 9,116,954 · App. 14/462,308 · Granted Aug 25, 2015

Data source joins

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 9,116,954
App. No.
14/462,308
Granted
Aug 25, 2015
Kind
B1
Abstract

Database report generation technology for handling a single logical query that requires data that is physically located in two different sources. The system uses intelligent push-down joins, which move data from one source to the other and join data within that source. The system dynamically determines which direction to move data depending on how the data is used in a query.

Claims (109)

1. A computer-implemented method comprising:

receiving a data request that is associated with a query that requires data from a first data source and a second data source, the second data source being different than the first data source;

identifying first data required from the first data source to satisfy the query;

identifying second data required from the second data source to satisfy the query;

determining a first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source;

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and the executing the query at the first data source comprises:

determining a first time needed to access and transfer the identified second data required from the second data source to the first data source,

determining a second time needed to execute the query using the first data source, and

computing a first cost measurement for the first data source that is indicative of time needed to yield query results from the first data source based on the first time and the second time;

determining a second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and the executing the query at the second data source comprises:

determining a third time needed to access and transfer the identified first data required from the first data source to the second data source,

determining a fourth time needed to execute the query using the second data source, and

computing a second cost measurement for the second data source that is indicative of time needed to yield query results from the second data source based on the third time and the fourth time;

comparing the determined first cost characteristic with the determined second cost characteristic;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first cost measurement with the second cost measurement;

based on comparison results, determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic;

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the determined first cost measurement indicates a lower time to yield query results than the determined second cost measurement;

based on the determination that the determined first cost characteristic indicates better performance than the determined second cost characteristic, moving, into the first data source, the identified second data required from the second data source;

subsequent to moving, into the first data source, the identified second data required from the second data source, executing the query against data included in the first data source; and

providing a response to the data request based on the execution of the query against data included in the first data source.

2. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises determining a first volume measurement of the first data required from the first data source to satisfy the query;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises determining a second volume measurement of the second data required from the second data source to satisfy the query;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first volume measurement with the second volume measurement; and

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the first volume measurement is greater than the second volume measurement.

3. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises determining whether the first data required from the first data source to satisfy the query is stored in a temporary data structure;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises determining whether the second data required from the second data source to satisfy the query is stored in a temporary data structure;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the determination of whether data required from the first data source to satisfy the query is stored in a temporary data structure with the determination of whether data required from the second data source to satisfy the query is stored in a temporary data structure; and

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the first data required from the first data source to satisfy the query is not stored in a temporary data structure and the second data required from the second data source to satisfy the query is stored in a temporary data structure.

4. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises determining a first time period of existence of a first data structure including the first data required from the first data source to satisfy the query;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises determining a second time period of existence of a second table including the second data required from the second data source to satisfy the query;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first time period with the second time period; and

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the first time period is longer than the second time period.

5. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises determining a first time needed to access and transfer the second data required from the second data source to the first data source;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises determining a second time needed to access and transfer the first data required from the first data source to the second data source;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first time with the second time; and

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the first time is shorter than the second time.

6. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises determining a first time needed to execute the query using the first data source;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises determining a second time needed to execute the query using the second data source;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first time with the second time; and

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the first time is shorter than the second time.

7. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises accounting for current usage of the first data source in determining the first cost characteristic; and

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises accounting for current usage of the second data source in determining the second cost characteristic.

8. The method of claim 7 :

wherein accounting for current usage of the first data source in determining the first cost characteristic comprises accounting for current bandwidth and load of the first data source in determining the first cost characteristic; and

wherein accounting for current usage of the second data source in determining the second cost characteristic comprises accounting for current bandwidth and load of the second data source in determining the second cost characteristic.

9. The method of claim 1 :

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source comprises determining a first cost characteristic based on monetary fees associated with moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source; and

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source comprises determining a second cost characteristic based on monetary fees associated with moving, to the second data source, the identified first data required from the first data source and executing the query at the second data source.

10. The method of claim 1 , further comprising, subsequent to executing the query against data included in the first data source, deleting, from the first data source, the identified second data required from the second data source that was moved into the first data source.

11. The method of claim 1 :

wherein moving, into the first data source, the identified second data required from the second data source comprises creating a data structure in the first data source to store the identified second data required from the second data source; and

wherein deleting, from the first data source, the identified second data required from the second data source that was moved into the first data source comprises deleting the data structure created in the first data source.

12. The method of claim 1 , wherein the executing the query against data included in the first data source comprises analyzing the query only against physical data storage of the first data source.

13. The method of claim 1 , wherein the executing the query against data included in the first data source comprises analyzing the query against physical data storage of the first data source without analyzing the query against physical data storage of the second data source.

14. The method of claim 1 , wherein the moving, into the first data source, the identified second data required from the second data source comprises joining, in the first data source, the identified first data required from the first data source with the identified second data required from the second data source.

15. The method of claim 1 , wherein the receiving the data request that is associated with a query that requires data from the first data source and the second data source comprises receiving a data request that is associated with a query that requires data from the first data source and the second data source, which are physically independent data sources that are located remotely from one another.

16. The method of claim 1 , wherein the receiving the data request that is associated with a query that requires data from the first data source and the second data source comprises receiving a query that requires data from the first data source and the second data source.

17. The method of claim 1 , wherein the receiving the data request that is associated with a query that requires data from the first data source and the second data source comprises receiving a report generation request that requires execution of a query to gather data required to generate the report.

18. A system comprising:

one or more computers; and

a computer-readable medium coupled to the one or more computers having instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

receiving a data request that is associated with a query that requires data from a first data source and a second data source, the second data source being different than the first data source;

identifying first data required from the first data source to satisfy the query;

identifying second data required from the second data source to satisfy the query;

determining a first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source;

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and the executing the query at the first data source comprises:

determining a first time needed to access and transfer the identified second data required from the second data source to the first data source,

determining a second time needed to execute the query using the first data source, and

computing a first cost measurement for the first data source that is indicative of time needed to yield query results from the first data source based on the first time and the second time;

determining a second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and the executing the query at the second data source comprises:

determining a third time needed to access and transfer the identified first data required from the first data source to the second data source,

determining a fourth time needed to execute the query using the second data source, and

computing a second cost measurement for the second data source that is indicative of time needed to yield query results from the second data source based on the third time and the fourth time;

comparing the determined first cost characteristic with the determined second cost characteristic;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first cost measurement with the second cost measurement;

based on comparison results, determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic;

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the determined first cost measurement indicates a lower time to yield query results than the determined second cost measurement;

based on the determination that the determined first cost characteristic indicates better performance than the determined second cost characteristic, moving, into the first data source, the identified second data required from the second data source;

subsequent to moving, into the first data source, the identified second data required from the second data source, executing the query against data included in the first data source; and

providing a response to the data request based on the execution of the query against data included in the first data source.

19. A non-transitory computer storage medium encoded with a computer program, the program comprising instructions that when executed by data processing apparatus cause the data processing apparatus to perform operations comprising:

receiving a data request that is associated with a query that requires data from a first data source and a second data source, the second data source being different than the first data source;

identifying first data required from the first data source to satisfy the query;

identifying second data required from the second data source to satisfy the query;

determining a first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and executing the query at the first data source;

wherein the determining the first cost characteristic related to moving, to the first data source, the identified second data required from the second data source and the executing the query at the first data source comprises:

determining a first time needed to access and transfer the identified second data required from the second data source to the first data source,

determining a second time needed to execute the query using the first data source, and

computing a first cost measurement for the first data source that is indicative of time needed to yield query results from the first data source based on the first time and the second time;

determining a second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and executing the query at the second data source;

wherein the determining the second cost characteristic related to maintaining the identified second data required from the second data source at the second data source and the executing the query at the second data source comprises:

determining a third time needed to access and transfer the identified first data required from the first data source to the second data source,

determining a fourth time needed to execute the query using the second data source, and

computing a second cost measurement for the second data source that is indicative of time needed to yield query results from the second data source based on the third time and the fourth time;

comparing the determined first cost characteristic with the determined second cost characteristic;

wherein the comparing the determined first cost characteristic with the determined second cost characteristic comprises comparing the first cost measurement with the second cost measurement;

based on comparison results, determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic;

wherein the determining that the determined first cost characteristic indicates better performance than the determined second cost characteristic comprises determining that the determined first cost measurement indicates a lower time to yield query results than the determined second cost measurement;

based on the determination that the determined first cost characteristic indicates better performance than the determined second cost characteristic, moving, into the first data source, the identified second data required from the second data source;

subsequent to moving, into the first data source, the identified second data required from the second data source, executing the query against data included in the first data source; and

providing a response to the data request based on the execution of the query against data included in the first data source.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072909/0658 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SECURITY INTEREST Recorded Jun 22, 2021
From: MICROSTRATEGY INCORPORATED
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 056647/0687 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2015
From: CAPPIELLO, SCOTT; LIANG, GANG; FENG, XUN; YUAN, JUN; LI, BENJAMIN Z.; LIAO, RIXIN
To: MICROSTRATEGY INCORPORATED
Reel/Frame 035193/0677 →