# US 10,120,921 B2 · Parallel transfer of SQL data to software framework

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,120,921 B2
- Document ID: US10120921B2
- Status: Granted
- Kind: B2
- Application number: 14/918,447
- Filed: 2015-10-20
- Published: 2017-04-20
- Granted: 2018-11-06
- Earliest claimed: 2015-10-20
- Assignees: Mastercard International Incorporated
- Applicants: MasterCard International Incorporated
- Inventors: Joshua A. Allbright
- Web page: https://patentgrep.com/patent/US10120921B2

## CPC

- G06F 16/258: {Data format conversion from or to a database}
- G06F 16/1858: {Parallel file systems, i.e. file systems supporting multiple processors}
- G06F 16/2255: {Hash tables}
- G06F 16/24532: {of parallel queries}
- G06F 16/24561: {Intermediate data storage techniques for performance improvement}
- H04L 47/726: Reserving resources in multiple paths to be used simultaneously (by balancing the load H04L47/125)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system, method, and computer-readable storage medium configured to facilitate the parallel transfer of Structured Query Language (SQL) data to a software framework.

## Claims

### Claim 1

A method of transferring data from at least one relational database to a software framework comprising:
determining, with a processor, a maximum number of parallel database threads for the at least one relational database;
based on a predetermined percentage of the maximum number of parallel database threads, load balancing the maximum number of parallel database threads with the processor, resulting in a load-balanced number of parallel database threads;
determining, with the processor, a number of hash buckets to be used based on a predetermined number of queries per job and a predetermined number of threads per query;
formulating a formulated query to the at least one relational database with the processor based on a query of the desired information, the formulated query including the load-balanced number of parallel database threads and the number of hash buckets, the formulated query assigning a respective row of the at least one relational database into a hash bucket;
receiving a query file from the at least one relational database based on the formulated query, the query file being stored on a non-transitory computer-readable storage medium; and
importing the query file into the software framework, the software framework being stored on the non-transitory computer-readable storage medium.

### Claim 2 (depends on 1)

The method of claim 1, wherein the formulated query hashes one or more rows of the at least one relational database into the number of hash buckets evenly.

### Claim 3 (depends on 2)

The method of claim 2, wherein the at least one relational database is a Structured Query Language database.

### Claim 4 (depends on 3)

The method of claim 3, wherein the software framework is configured for distributed storage and processing on computer clusters.

### Claim 5 (depends on 4)

The method of claim 4, wherein the software framework is configured for distributed storage and processing on a plurality of computer clusters.

### Claim 6 (depends on 5)

The method of claim 5, wherein each of the plurality of computer clusters comprises:
a microprocessor configured to process in parallel with the plurality of the computer clusters.

### Claim 7

A computing device to transfer data from at least one relational database to a software framework comprising:
means for determining a maximum number of parallel database threads for the at least one relational database;
means for load balancing the maximum number of parallel database threads based on a predetermined percentage of the maximum number of parallel database threads, resulting in a load-balanced number of parallel database threads;
means for determining a number of hash buckets to be used based on a predetermined number of queries per job and a predetermined number of threads per query;
means for formulating a formulated query to the at least one relational database based on a query of the desired information, the formulated query including the load-balanced number of parallel database threads and the number of hash buckets, the formulated query assigning a respective row of the at least one relational database into a hash bucket;
means for receiving a query file from the at least one relational database based on the formulated query, the query file being stored on a non-transitory computer-readable storage medium; and
means for importing the query file into the software framework, the software framework being stored on the non-transitory computer-readable storage medium.

### Claim 8 (depends on 7)

The device of claim 7, wherein the formulated query hashes one or more rows of the at least one relational database into the number of hash buckets evenly.

### Claim 9 (depends on 8)

The device of claim 8, wherein the at least one relational database is a Structured Query Language database.

### Claim 10 (depends on 9)

The device of claim 9, wherein the software framework is configured for distributed storage and processing on computer clusters.

### Claim 11 (depends on 10)

The device of claim 10, wherein the software framework is configured for distributed storage and processing on a plurality of computer clusters.

### Claim 12 (depends on 11)

The device of claim 11, wherein each of the plurality of computer clusters comprises:
a microprocessor configured to process in parallel with the plurality of the computer clusters.

### Claim 13

A device to transfer data from at least one relational database to a software framework, said device comprising:
a processor programmed to:
determine a maximum number of parallel database threads for the at least one relational database,
load balance the maximum number of parallel database threads with said processor based on a predetermined percentage of the maximum number of parallel database threads, resulting in a load balanced number of parallel database threads,
determine a number of hash buckets to be used based on a predetermined number of queries per job and a predetermined number of threads per query,
formulate a formulated query to the at least one relational database based on a query of the desired information, the formulated query including the load balanced number of parallel database threads and the number of hash buckets, the formulated query assigning a respective row of the at least one relational database into a hash bucket,
receive a query file from the at least one relational database based on the formulated query, and
import the query file into a software framework; and
a non-transitory computer-readable storage medium coupled to said processor and configured to store the query file and the software framework.

### Claim 14 (depends on 13)

The device of claim 13, wherein the formulated query hashes one or more rows of the at least one relational database into the number of hash buckets evenly.

### Claim 15 (depends on 14)

The device of claim 14, wherein the at least one relational database is a Structured Query Language database.

### Claim 16 (depends on 15)

The device of claim 15, wherein the software framework is configured for distributed storage and processing on computer clusters.

### Claim 17 (depends on 16)

The device of claim 16, wherein the software framework is configured for distributed storage and processing on a plurality of computer clusters.

### Claim 18 (depends on 17)

The device of claim 17, wherein each of the plurality of computer clusters comprises:
a microprocessor configured to process in parallel with the plurality of the computer clusters.
