Concurrent processing of data sources
Saved in:
| Title: | Concurrent processing of data sources |
|---|---|
| Patent Number: | 10303,687 |
| Publication Date: | May 28, 2019 |
| Appl. No: | 15/254094 |
| Application Filed: | September 01, 2016 |
| Abstract: | A pattern matching component is provided. The pattern matching component utilizes a plurality of processors to efficiently identify and retrieve information from a plurality of data sources. In some examples, the pattern matching component concurrently executes multiple portions of a data access plan, such as a query execution plan, using a plurality of processors disposed within a multi-core processor. The pattern matching component may concurrently execute multiple portions of the data access plan using a plurality of processors in a distributed system. Concurrent execution of at least some of the operations required to identify and retrieve the information results in increased efficiency over conventional query execution methods. |
| Inventors: | Parallel Universe, Inc. (Arlington, MA, US) |
| Assignees: | Parallel Universe, Inc. (Arlington, MA, US) |
| Claim: | 1. A computer system configured to access related and distributed data, the computer system comprising: a memory including: at least one relational database including at least one first table and at least one second table; a query execution plan identifying the at least one first table and the at least one second table; at least one first buffer; and at least one second buffer; and at least one processor coupled to the memory and configured to execute the query execution plan at least in part by executing a first thread of executable instructions concurrently with a second thread of executable instructions; retrieving, via the first thread, first data from the at least one first table at least in part by identifying first records that meet at least one condition associated with the at least one first table; and retrieving the first data from the first records; retrieving, via the second thread, second data from the at least one first table at least in part by identifying second records that meet the at least one condition associated with the at least one first table; and retrieving the second data from the second records; storing, via the first thread, the first data in the at least one first buffer; storing, via the second thread, the second data in the at least one first buffer executing a third thread of executable instructions concurrently with a fourth thread of executable instructions; retrieving, from at least one second table in the relational database via the third thread, first records that meet at least one condition evaluated using third data stored in the at least one first buffer; retrieving, via the fourth thread, second records from the at least one second table that meet at least one condition evaluated using fourth data stored in the at least one first buffer; storing, via the third thread, data from the first records in at least one second buffer; and storing, via the fourth thread, data from the second records in the at least one second buffer, the first records being stored at a different location within the at least one first buffer from the second records. |
| Claim: | 2. A data access method executed by a computer system including at least one processor, the method comprising: executing a first thread of executable instructions concurrently with a second thread of executable instructions; retrieving, via the first thread, first data from at least one first table in a relational database at least in part by identifying first records that meet at least one condition associated with the at least one first table; and retrieving the first data from the first records; retrieving, via the second thread, second data from the at least one first table at least in part by identifying second records that meet the at least one condition associated with the at least one first table; and retrieving the second data from the second records; storing, via the first thread, the first data in at least one first buffer; storing, via the second thread, the second data in the at least one first buffer; executing a third thread of executable instructions concurrently with a fourth thread of executable instructions; retrieving, from at least one second table in the relational database via the third thread, first records that meet at least one condition evaluated using third data stored in the at least one first buffer; retrieving, via the fourth thread, second records from the at least one second table that meet at least one condition evaluated using fourth data stored in the at least one first buffer; storing, via the third thread, data from the first records in at least one second buffer; and storing, via the fourth thread, data from the second records in the at least one second buffer, the first records being stored at a different location within the at least one first buffer from the second records. |
| Claim: | 3. A non-transitory computer readable medium having a program stored therein to access related and distributed data, the program being executable by a computer system including at least one processor, at least one first buffer and at least one second buffer, the program comprising: instructions to execute a first thread of executable instructions concurrently with a second thread of executable instructions, wherein the first thread comprises executable instructions to retrieve first data from at least one first table in a relational database at least in part by identifying first records that meet at least one condition associated with the at least one first table; and retrieving the first data from the first records; and executable instructions to store the first data in at least one first buffer; and the second thread comprises executable instructions to retrieve second data from the at least one first table at least in part by identifying second records that meet the at least one condition associated with the at least one first table; and retrieving the second data from the second records; and executable instructions to store the second data in the at least one first buffer; and instructions to execute a third thread of executable instructions concurrently with a fourth thread of executable instructions, wherein the third thread comprises executable instructions to retrieve, from at least one second table in a relational database, first records that meet at least one condition evaluated using third data stored in the at least one first buffer; and executable instructions to store data from the first records in at least one second buffer; and the fourth thread comprises executable instructions to retrieve second records from the at least one second table that meet at least one condition evaluated using fourth data stored in the at least one first buffer; and executable instructions to store data from the second records in the at least one second buffer, the first records being stored at a different location within the at least one first buffer from the second records. |
| Claim: | 4. The computer system of claim 1 , wherein the at least one processor is configured to provide a result from execution of the query execution plan to a component that generated the query execution plan. |
| Claim: | 5. The method of claim 2 , further comprising: retrieving, via the third thread, the third data from the at least one first buffer in a round-robin fashion; and retrieving, via the fourth thread, the fourth data from the at least one first buffer in a round-robin fashion. |
| Claim: | 6. The method of claim 2 , further comprising parsing a query execution plan to identify an order of processing indicating the at least one first table be processed prior to the at least one second table. |
| Claim: | 7. The computer readable medium of claim 3 , the program further comprising: instructions to execute the first thread concurrently with the second thread via a first processing core of a multi-core processor; and instructions to execute the third thread concurrently with the fourth thread via a second processing core of the multi-core processor. |
| Claim: | 8. The computer readable medium of claim 3 , the third thread further comprising executable instructions to retrieve the third data from the at least one first buffer in a round-robin fashion and the fourth thread further comprising executable instructions to retrieve the fourth data from the at least one first buffer in a round-robin fashion. |
| Claim: | 9. The computer readable medium of claim 3 , the program further comprising instructions to parse a query execution plan to identify an order of processing indicating the at least one first table be processed prior to the at least one second table. |
| Claim: | 10. The computer readable medium of claim 9 , the program further comprising instructions to provide a result from execution of the query execution plan to a component that generated the query execution plan. |
| Claim: | 11. The computer system of claim 4 , wherein the at least one processor includes a first processing core and a second processing core within a multi-core processor and the first processing core is configured to execute the first thread concurrently with the second thread and the second processing core is configured to execute the third thread concurrently with the fourth thread. |
| Claim: | 12. The computer system of claim 4 , wherein the at least one processor is further configured to execute the query execution plan at least in part by retrieving, via the third thread, the third data from the at least one first buffer in a round-robin fashion and retrieving, via the fourth thread, the fourth data from the at least one first buffer in a round-robin fashion. |
| Claim: | 13. The computer system of claim 4 , wherein the at least one processor is further configured to execute the query execution plan at least in part by parsing the query execution plan to identify an order of processing indicating the at least one first table be processed prior to the at least one second table. |
| Claim: | 14. The method of claim 6 , further comprising providing a result from execution of the query execution plan to a component that generated the query execution plan. |
| Patent References Cited: | 4870568 September 1989 Kahle et al. 5367675 November 1994 Cheng et al. 6546381 April 2003 Subramanian et al. 7010521 March 2006 Hinshaw et al. 8244715 August 2012 Cole et al. 8706973 April 2014 Lee et al. 9378246 June 2016 Watari 9805080 October 2017 Joshi 2002/0023069 February 2002 Blank et al. 2003/0229640 December 2003 Carlson et al. 2005/0278152 December 2005 Blaszczak 2006/0212429 September 2006 Bruno 2011/0047144 February 2011 Han et al. |
| Other References: | Krikellas et al., “Multithreaded Query Execution on Multicore Processors”, Very Large Data Base '09, Aug. 24-28, 2009, Lyon, France. cited by applicant |
| Primary Examiner: | Al-Hashemi, Sana A |
| Attorney, Agent or Firm: | Finch & Maloney PLLC |
| Accession Number: | edspgr.10303687 |
| Database: | USPTO Patent Grants |
| Abstract: | A pattern matching component is provided. The pattern matching component utilizes a plurality of processors to efficiently identify and retrieve information from a plurality of data sources. In some examples, the pattern matching component concurrently executes multiple portions of a data access plan, such as a query execution plan, using a plurality of processors disposed within a multi-core processor. The pattern matching component may concurrently execute multiple portions of the data access plan using a plurality of processors in a distributed system. Concurrent execution of at least some of the operations required to identify and retrieve the information results in increased efficiency over conventional query execution methods. |
|---|