IP Library Granted Patent US 10,127,276
Granted Patent B2
US 10,127,276 · App. 15/040,851 · Granted Nov 13, 2018

Method and system for dynamically optimizing client queries to read-mostly servers

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 10,127,276
App. No.
15/040,851
Granted
Nov 13, 2018
Kind
B2
Abstract

A system and method of query optimization are disclosed. A complexity measure of a client query received from a client application is compared to a predetermined threshold, which is determined using at least one of system data and query execution data. An optimized query is generated by modifying the client query to reduce the complexity measure of the client query if the complexity measure of the client query exceeds the predetermined threshold. The optimized query is submitted to a server application on a server and a post-processing routine to be applied to the result set is selected.

Claims (54)

1. A method of query optimization, comprising:

comparing a complexity measure of a client query received from a client application to a predetermined threshold, the client query received before the client query reaches a server application on a server, wherein the predetermined threshold is determined based on query execution data collected from at least one previous query;

generating an optimized query by modifying the client query to reduce the complexity measure of the client query if the complexity measure of the client query exceeds the predetermined threshold, wherein an expected result set size of the optimized query is greater than an expected result set size of the client query;

submitting the optimized query to the server application on the server;

selecting a post-processing routine to be applied to a result set of the optimized query to have a filtered result set; and

returning the filtered set to the client application.

2. The method of claim 1 , wherein the complexity measure of the client query is calculated using at least one of a type of operators in the client query, a number of operators in the client query, and a number of sub-queries.

3. The method of claim 1 , wherein the predetermined threshold is determined further based on system data comprising at least one of:

static system data including at least one of server performance characteristics, server capacity characteristics, a server content distribution, a predetermined maximum client load, a predetermined maximum server load, and predetermined maximum network load; and

dynamic system data including at least one of a measure of the server load at the time a query is submitted, a measure of the client load at the time the query is submitted, and a measure of the network load at the time the query is submitted.

4. The method of claim 1 , further comprising intercepting the client query from a client application before the client query reaches the server application.

5. The method of claim 1 , wherein the query execution data comprises, for the at least one previous query, at least one of a result set size, a query response time, a query execution time, a measure of the network load at the time of query execution, and a query complexity measure.

6. The method of claim 1 , wherein the at least one previous query comprises at least one of a client query, an optimized query, or a probe query.

7. The method of claim 1 , further comprising:

submitting a probe query to the server application, wherein the probe query is a user configured query or a frequently used query;

automatically submitting the probe query to the server application at a selected time; and

collecting query execution data for the probe query, wherein the query execution data for the probe query includes at least one of a result set size, a query response time, a measure of the network load at the time of query execution, and a query complexity measure.

8. A system comprising:

a processor;

a computer readable medium communicatively coupled to the processor; and

computer-executable instructions encoded in the computer readable medium, the instructions, when executed by the processor, operable to perform operations comprising:

comparing a complexity measure of a client query received from a client application to a predetermined threshold, the client query received before the client query reaches a server application on a server, wherein the predetermined threshold is determined based on query execution data collected from at least one previous query;

generating an optimized query by modifying the client query to reduce the complexity measure of the client query if the complexity measure of the client query exceeds the predetermined threshold, wherein an expected result set size of the optimized query is greater than an expected result set size of the client query;

submitting the optimized query to the server application on the server;

selecting a post-processing routine to be applied to a result set of the optimized query to have a filtered result set; and

returning the filtered set to the client application.

9. The system of claim 8 , wherein the complexity measure of the client query is calculated using at least one of a type of operators, a number of operators in the client query or a number of sub-queries.

10. The system of claim 8 , wherein:

the predetermined threshold is determined further based on system data comprising at least one of:

static system data including at least one of server performance characteristics, server capacity characteristics, a server content distribution, a predetermined maximum client load, a predetermined maximum server load, and predetermined maximum network load; and

dynamic system data including at least one of a measure of the server load at the time a query is submitted, a measure of the client load at the time the query is submitted, and a measure of the network load at the time the query is submitted; and

the query execution data comprises, for the at least one previous query, at least one of a result set size, a query response time, a measure of the network load at the time of query execution, and a query complexity measure.

11. The system of claim 8 , wherein the at least one previous query comprises at least one of a client query, an optimized query, or a probe query.

12. The system of claim 8 , wherein the instructions are further operable to perform operations comprising:

submitting a probe query to the server application, wherein the probe query is a user configured query or a frequently used query;

automatically submitting the probe query to the server application at a selected time; and

collecting query execution data for the probe query, wherein the query execution data for the probe query includes at least one of a result set size, a query response time, a measure of the network load at the time of query execution, and a query complexity measure.

13. A non-transitory, computer readable medium including computer-executable instructions encoded in the computer readable medium, the instructions, when executed by the processor, operable to perform operations comprising:

comparing a complexity measure of a client query received from a client application to a predetermined threshold, the client query received before the client query reaches a server application on a server, wherein the predetermined threshold is determined based on query execution data collected from at least one previous query;

modifying the client query to generate an optimized query if the complexity measure of the client query exceeds the predetermined threshold, wherein an expected result set size of the optimized query is greater than an expected result set size of the client query;

submitting the optimized query to the server application on the server;

selecting a post-processing routine to be applied to a result set of the optimized query to have a filtered result set; and

returning the filtered result set to the client application.

14. The non-transitory, computer readable medium of claim 13 , wherein the complexity measure of the client query is calculated using at least one of a type of operators, a number of operators in the client query or a number of sub-queries.

15. The non-transitory, computer readable medium of claim 13 , wherein:

the predetermined threshold is determined further based on system data comprising at least one of:

static system data including at least one of server performance characteristics, server capacity characteristics, a server content distribution, a predetermined maximum client load, a predetermined maximum server load, and predetermined maximum network load; and

dynamic system data including at least one of a measure of the server load at the time a query is submitted, a measure of the client load at the time the query is submitted, and a measure of the network load at the time the query is submitted; and

the query execution data comprises, for the at least one previous query, at least one of a result set size, a query response time, a measure of the network load at the time of query execution, and a query complexity measure.

16. The non-transitory, computer readable medium of claim 13 , wherein the at least one previous query comprises at least one of a client query, an optimized query, or a probe query.

17. The non-transitory, computer readable medium of claim 13 , the computer-executable instructions when executed by the processor, further operable to perform operations comprising:

submitting a probe query to the server application, wherein the probe query is a user configured query or a frequently used query;

automatically submitting the probe query to the server application at a selected time; and

collecting query execution data for the probe query, wherein the query execution data for the probe query includes at least one of a result set size, a query response time, a measure of the network load at the time of query execution, and a query complexity measure.

Assignments (17)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL USA L.P.; ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
RELEASE OF SECURITY INTEREST AT REEL 048825 FRAME 0489 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058000/0916 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Apr 8, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 048825/0489 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
RELEASE OF REEL 038664 FRAME 0908 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040027/0390 →
RELEASE OF REEL 038665 FRAME 0041 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0375 →
RELEASE OF REEL 038665 FRAME 0001 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040021/0348 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 11, 2016
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 038665/0001 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 11, 2016
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 038665/0041 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 11, 2016
From: DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 038664/0908 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2016
From: YOUSAF, MUHAMMAD; CARDONE, RICHARD J.; GANGISETTY, SWATHI
To: DELL PRODUCTS L.P.
Reel/Frame 038534/0398 →