IP Library Granted Patent US 11,188,532
Granted Patent B2
US 11,188,532 · App. 16/687,785 · Granted Nov 30, 2021

Successive database record filtering on disparate database types

Inventors: Jong Ho Won (Palo Alto, CA); Karen Brems (Redwood City, CA); Jiajie Liang (Palo Alto, CA); Gregory Bollella (Palo Alto, CA); Hui Xu (Palo Alto, CA); Arushi Gangrade (Palo Alto, CA)
Assignee: VMWARE, INC.
G06F16/24535G06F16/2471
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,188,532
App. No.
16/687,785
Granted
Nov 30, 2021
Kind
B2
Abstract

A computing environment is configured to divide a search query into at least a first sub-query and a second sub-query. A first service and a second service are created to execute the first sub-query and the second sub-query and identify search results from a first one and a second one of the databases, respectively, in parallel. For instance, in response to the first set of search results being placed in the first queue, the second one of the services can execute the second subquery on a second database while the first service performs subsequent queries. A final result of the search query can be generated based at least in part on the second set of search results in the second queue.

Claims (99)

1. A system for successive database filtering, comprising:

at least one computing device;

program instructions stored in memory and executable in the at least one computing device that, when executed by the at least one computing device, direct the at least one computing device to:

in response to receipt of a search query that involves multiple ones of a plurality of databases, identify a type of a first database and a type of a second database of the plurality of databases, the type of the second database being different than the type of the first database;

generate a first sub-query in accordance with the type of the first database such that the first sub-query is compliant;

generate a second sub-query in accordance with the type of the second database such that the second sub-query is compliant;

execute, by a first service of a plurality of services, the first sub-query to identify a first set of search results from the first database;

store, by the first service, the first set of search results in a first queue;

in response to the first set of search results being placed in the first queue, execute, by a second service of the plurality of services, the second sub-query to identify a second set of search results from the second database using the first set of search results, wherein

the first and the second services execute the first and the second sub-queries in parallel;

the first sub-query is executed by the first service to retrieve a predefined number of search results; and

while the second service executes the second sub-query, the first sub-query is executed again by the first service, to retrieve another redefined number of search results;

store, by the second service, the second set of search results in a second queue; and

generate, by at least one of the first and the second services, a final result of the search query based at least in part on the second set of search results in the second queue and return the final result to a requesting service.

2. The system of claim 1 , wherein:

the search query involves at least a third database of the plurality of databases;

the search query is divided into at least the first sub-query, the second sub-query, and a third sub-query; and

the at least one computing device is further directed to:

in response to the second set of search results being placed in the second queue, execute, by a third service of the plurality of services, the third sub-query to identify a third set of search results from the third database using the second set of search results; and

store, by the third service, the third set of search results in a third queue, wherein the final result of the search query is further generated based at least in part on the third set of search results in the third queue.

3. The system of claim 1 , wherein the first and the second services execute the first and the second sub-queries in parallel by:

in response to the first set of search results being placed in the first queue, continuing, by the first service, execution of the first sub-query on the first database to continue placing search results in the first queue; and

while the first one of the services is placing search results in the first queue, execute, by a second one of the services, the second sub-query to identify a second set of search results from a second database using the first set of search results.

4. The system of claim 1 , wherein the at least one computing device is further directed to, in response to the receipt of the search query that involves the multiple ones of the plurality of databases:

identify a number of databases required to be searched from the search query; and

create at least the first and the second services, wherein a total number of the services created is equal to or greater than the number of databases required to be searched.

5. The system of claim 1 , wherein:

the first database is logically distinct from the second database; and

the first service or the second service is selected from a group comprising: a virtual machine, a thread, and a process.

6. The system of claim 1 , wherein the at least one computing device is further directed to determine an order of execution between at least the first and the second services by:

randomly selecting at least a portion of an identifier uniquely identifying one of the first and the second sets of search results;

performing a count search query using the at least portion of the identifier randomly selected; and

estimating a number of search results to be obtained by the first and the second services based at least in part on a result of the count search query.

7. A method for successive database filtering, comprising:

in response to receipt of a search query that involves multiple ones of a plurality of databases, identifying a type of a first database and a type of a second database of the plurality of databases, the type of the second database being different than the type of the first database;

generating a first sub-query in accordance with the type of the first database such that the first sub-query is compliant;

generating a second sub-query in accordance with the type of the second database such that the second sub-query is compliant;

executing, by a first service of a plurality of services, the first sub-query to identify a first set of search results from the first database;

storing, by the first service, the first set of search results in a first queue;

in response to the first set of search results being placed in the first queue, execute, by a second service of the plurality of services, the second sub-query to identify a second set of search results from the second database using the first set of search results, wherein

the first and the second services execute the first and the second sub-queries in parallel;

the first sub-query is executed by the first service to retrieve a predefined number of search results; and

while the second service executes the second sub-query, the first sub-query is executed again by the first service, to retrieve another predefined number of search results;

storing, by the second service, the second set of search results in a second queue; and

generating, by at least one of the first and the second services, a final result of the search query based at least in part on the second set of search results in the second queue and return the final result to a requesting service.

8. The method of claim 7 , wherein:

the search query involves at least a third database of the plurality of databases; and

the method further comprises:

dividing the search query into at least the first sub-query, the second sub-query, and a third sub-query;

in response to the second set of search results being placed in the second queue, executing, by a third service of the plurality of services, the third sub-query to identity a third set of search results from the third database using the second set of search results; and

storing, by the third service, the third set of search results in a third queue, wherein the final result of the search query is further generated based at least in part on the third set of search results in the third queue.

9. The method of claim 7 , wherein the first and the second services execute the first and the second sub-queries in parallel by:

in response to the first set of search results being placed in the first queue, continuing, by the first service, execution of the first sub-query on the first database to continue placing search results in the first queue; and

while the first one of the services is placing search results in the first queue, execute, by a second one of the services, the second sub-query to identify a second set of search results from a second database using the first set of search results.

10. The method of claim 7 , further comprising:

in response to the receipt of the search query that involves the multiple ones of the plurality of databases:

identifying a number of databases required to be searched from the search query; and

creating at least the first and the second services, wherein a total number of the services created is equal to or greater than the number of databases required to be searched.

11. The method of claim 7 , wherein:

the first database is logically distinct from the second database; and

the first service or the second service is selected from a group comprising: a virtual machine, a thread, and a process.

12. The method of claim 7 , further comprising determining an order of execution between at least the first and the second services by:

randomly selecting at least a portion of an identifier uniquely identifying one of the first and the second sets of search results;

performing a count search query using the at least portion of the identifier randomly selected; and

estimating a number of search results to be obtained by the first and the second services based at least in part on a result of the count search query.

13. A non-transitory computer-readable medium comprising program instructions for successive database filtering that, when executed by at least one computing device, direct the at least one computing device to:

in response to receipt of a search query that involves multiple ones of a plurality of databases, identify a type of a first database and a type of a second database of the plurality of databases, the type of the second database being different than the type of the first database;

generate a first sub-query in accordance with the type of the first database such that the first sub-query is compliant;

generate a second sub-query in accordance with the type of the second database such that the second sub-query is compliant;

execute, by a first service of a plurality of services, the first sub-query to identify a first set of search results from the first database;

store, by the first service, the first set of search results in a first queue;

in response to the first set of search results being placed in the first queue, execute, by a second service of the plurality of services, the second sub-query to identify a second set of search results from the second database using the first set of search results, wherein

the first and the second services execute the first and the second sub-queries in parallel;

the first sub-query is executed by the first service to retrieve a predefined number of search results; and

while the second service executes the second sub-query, the first sub-query is executed again by the first service, to retrieve another predefined number of search results;

store, by the second service, the second set of search results in a second queue; and

generate, by at least one of the first and the second services, a final result of the search query based at least in part on the second set of search results in the second queue and return the final result to a requesting service.

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

the search query involves at least a third database of the plurality of databases;

the search query is divided into at least the first sub-query, the second sub-query, and a third sub-query; and

the at least one computing device is further directed to;

in response to the second set of search results being placed in the second queue, execute, by a third service of the plurality of services, the third sub-query to identify a third set of search results from the third database using the second set of search results; and

store, by the third service, the third set of search results in a third queue, wherein the final result of the search query is further generated based at least in part on the third set of search results in the third queue.

15. The non-transitory computer-readable medium of claim 13 , wherein the first and the second services execute the first and second sub-queries in parallel by:

in response to the first set of search results being placed in the first queue, continuing, by the first service, execution of the first sub-query on the first database to continue placing search results in the first queue; and

while the first one of the services is placing search results in the first queue, execute, by a second one of the services, the second sub-query to identify a second set of search results from a second database using the first set of search results.

16. The non-transitory computer-readable medium of claim 13 , wherein the at least one computing device is further directed to, in response to the receipt of the search query that involves the multiple ones of the plurality of databases:

identify a number of databases required to be searched from the search query; and

create at least the first and the second services, wherein a total number of the services created is equal to or greater than the number of databases required to be searched.

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

the first database is logically distinct from the second database; and

the first service or the second service is selected from a group comprising: a virtual machine, a thread, and a process.

18. The non-transitory computer-readable medium of claim 13 , wherein the at least one computing device is further directed to determine an order of execution between at least the first and the second services by:

randomly selecting at least a portion of an identifier uniquely identifying one of the first and the second set of search results;

performing a count search query using the portion of the identifier randomly selected; and

estimating a number of search results to be obtained by the first and the second services based at least in part on a result of the count search query.

19. The system of claim 1 , wherein:

the second service executes the second sub-query to identify the second set of search results by filtering results from the first set of search results in the first queue using data obtained from the second database; and

the second set of search results has a lesser amount of search results than the first set of search results.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2021
From: WON, JONG HO; BREMS, KAREN; LIANG, JIAJIE; BOLLELLA, GREGORY; XU, HUI; GANGRADE, ARUSHI
To: VMWARE, INC.
Reel/Frame 057863/0965 →