IP Library Granted Patent US 8,880,485
Granted Patent B2
US 8,880,485 · App. 13/075,507 · Granted Nov 4, 2014

Systems and methods to facilitate multi-threaded data retrieval

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 8,880,485
App. No.
13/075,507
Granted
Nov 4, 2014
Kind
B2
Abstract

According to some embodiments, a data source is accessed from which data will be retrieved via a plurality of processing threads. The data source may have, for example, a plurality of records with each record being associated with a plurality of identifiers. Each of the plurality of identifiers may be dynamically evaluated as a potential range identifier, and the evaluation may be based at least in part on a number of distinct values present within each identifier. One of the potential range identifiers may be selected as a selected range identifier, and the plurality of records may be divided into ranges defined using the selected range identifier.

Claims (41)

1. A computer implemented method, comprising:

accessing a data source from which data will be retrieved via a plurality of processing threads, the data source having a plurality of records with each record being associated with a plurality of identifiers;

dynamically evaluating each of the plurality of identifiers as a potential range identifier, wherein said evaluation is based at least in part on a number of distinct values present within each identifier;

selecting one of the potential range identifiers as a selected range identifier;

dividing the plurality of records into ranges defined using the selected range identifier; and

calculating a range size for each of the ranges based on the number of distinct values, a maximum value associated with a potential range identifier, a minimum value associated with the potential range identifier and the number of processing threads, wherein the range size is rounded up to a next whole integer.

2. The method of claim 1 , further comprising:

assigning different processing threads to different ranges; and

simultaneously retrieving the data from the ranges by executing the plurality of processing threads.

3. The method of claim 1 , wherein said evaluation comprises selecting a potential range identifier having the largest number of distinct values as the selected range identifier.

4. The method of claim 1 , wherein the data source comprises a table of business information and each of the plurality of potential range identifiers are associated with a table column.

5. The method of claim 4 , wherein the data retrieval is associated with a backup operation for the business information.

6. The method of claim 1 , further comprising:

dynamically adjusting at least one range size after a portion of the data is retrieved from the ranges by the plurality of processing threads.

7. The method of claim 6 , wherein said adjustment is based at least in part on an evaluation of the data retrieved from the data source.

8. The method of claim 1 , wherein the range size for each of the ranges is calculated by the number of distinct values (the maximum value associated with the potential range identifier−a minimum value associated with the potential range identifier) divided by (the number of processing threads+1) rounded up to a next whole integer.

9. A non-transitory, computer-readable medium storing program code executable by a computer to:

access a data source from which data will be retrieved via a plurality of processing threads, the data source having a plurality of records with each record being associated with a plurality of identifiers;

dynamically evaluate each of the plurality of identifiers as a potential range identifier, wherein said evaluation is based at least in part on a number of distinct values present within each identifier;

select one of the potential range identifiers as a selected range identifier; and

divide the plurality of records into ranges defined using the selected range identifier; and

calculate a range size for each of the ranges based on the number of distinct values, a maximum value associated with a potential range identifier, a minimum value associated with the potential range identifier and the number of processing threads, wherein the range size is rounded up to a next whole integer.

10. The medium of claim 9 , further storing program code executable by the computer to:

assign different processing threads to different ranges; and

simultaneously retrieve the data from the ranges by executing the plurality of processing threads.

11. The medium of claim 9 , wherein said evaluation comprises selecting a potential range identifier having the largest number of distinct values as the selected range identifier.

12. The medium of claim 9 , wherein the data source comprises a table of business information and each of the plurality of potential range identifiers are associated with a table column.

13. The medium of claim 9 , further storing program code executable by the computer to:

dynamically adjusting at least one range size after a portion of the data is retrieved from the ranges by the plurality of processing threads.

14. A system, comprising:

an data source having a plurality of records with each record being associated with a plurality of identifiers; and

a data retrieval unit, associated with a plurality of processing threads, to:

dynamically evaluate each of the plurality of identifiers as a potential range identifier, wherein said evaluation is based at least in part on a number of distinct values present within each identifier,

select one of the potential range identifiers as a selected range identifier,

dividing the plurality of records into ranges defined using the selected range identifier; and

calculate a range size for each of the ranges based on the number of distinct values, a maximum value associated with a potential range identifier, a minimum value associated with the potential range identifier and the number of processing threads, wherein the range size is rounded up to a next whole integer.

15. The system of claim 14 , wherein the data retrieval unit is further to:

assign different processing threads to different ranges; and

simultaneously retrieve the data from the ranges by executing the plurality of processing threads.

16. The system of claim 14 , wherein the data retrieval unit is further to:

dynamically adjust at least one range size after a portion of the data is retrieved from the ranges by the plurality of processing threads.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2011
From: ROZENWALD, GUY; HAHAM, URI; KELLNER, TAL
To: SAP AG
Reel/Frame 026048/0324 →