IP Library Granted Patent US 7,792,824
Granted Patent B2
US 7,792,824 · App. 10/753,517 · Granted Sep 7, 2010

Apparatus and method for enabling parallel processing of a computer program using existing database parallelism

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 7,792,824
App. No.
10/753,517
Granted
Sep 7, 2010
Kind
B2
Abstract

An apparatus and method enable parallelism in a computer program using parallelism that is built-in to many modem database managers. The parallelism provided by a database manager in executing user-defined functions provides an easy way to implement parallelism for database and non-database functions in a computer program without the need of hard-coding all the parallelism support in the computer program itself. A database table is defined with instructions the user wants to execute in parallel. A user-defined function is then defined that executes the instructions in the table. A database operation is then defined for the table that invokes the user-defined function. When the database operation is executed, the database manager provides parallelism by executing multiple tasks in parallel in the user-defined function. The built-in parallelism in many modem database managers thus may be used to enable parallelism in a computer program by using user-defined functions in a manner not previously thought of before.

Claims (48)

1. An apparatus comprising:

at least one processor;

a memory coupled to the at least one processor;

a database residing in the memory, the database including a database manager that provides parallel execution of user-defined functions;

a table residing in the memory that includes a plurality of instructions;

a user-defined function that executes the plurality of instructions in the table; and

a database operation residing in the memory that references the table and the user-defined function to provide parallel execution of the plurality of instructions in the table using the parallel execution of user-defined functions provided by the database manager;

a percent completion mechanism residing in the memory that computes percent completion of the user-defined function by dividing a number of completed rows in the table by a number of total rows in the table; and

a suspend/resume mechanism residing in the memory that suspends the execution of the user-defined function when a currently-executing instruction is completed.

2. The apparatus of claim 1 wherein the user-defined function comprises a scalar function.

3. An apparatus comprising:

at least one processor;

a memory coupled to the at least one processor;

a database residing in the memory, the database including a database manager that provides parallel execution of user-defined functions;

a table residing in the memory that includes a plurality of instructions;

a user-defined scalar function that executes the plurality of instructions in the table;

a database operation residing in the memory that references the table and the user-defined function to provide parallel execution of the plurality of instructions in the table using the parallel execution of user-defined functions provided by the database manager, wherein the database manager computes percent completion of the user-defined function by dividing a number of completed rows in the table by a number of total rows in the table; and

a suspend/resume mechanism residing in the memory that suspends the execution of the user-defined function when a currently-executing instruction is completed, and that resumes the execution of the user-defined function by commencing execution of a next instruction in the table.

4. A computer-implemented method for providing parallel execution in a computer program, the method comprising the steps of:

using a database manager that provides parallel execution of user-defined functions to create a table that includes a plurality of instructions;

defining a user-defined function that executes the plurality of instructions in the table;

defining a database operation that references the table and the user-defined function to provide parallel execution of the plurality of instructions in the table using the parallel execution of user-defined functions provided by the database manager;

executing the database operation;

computing percent completion of the user-defined function by dividing a number of completed rows in the table by a number of total rows in the table; and

suspending the execution of the user-defined function when a currently-executing instruction is completed.

5. The method of claim 4 wherein the user-defined function comprises a scalar function.

6. A computer-implemented method for providing parallel execution in a computer program, the method comprising the steps of:

using a database manager that provides parallel execution of user-defined functions to create a table that includes a plurality of instructions;

defining a user-defined scalar function that executes the plurality of instructions in the table;

defining a database operation that references the table and the user-defined function to provide parallel execution of the plurality of instructions in the table using the parallel execution of user-defined functions provided by the database manager;

executing the database operation;

computing percent completion of the user-defined function by dividing a number of completed rows in the table by a number of total rows in the table;

suspending the execution of the user-defined function when a currently-executing instruction is completed; and

resuming the execution of the user-defined function by commencing execution of a next instruction in the table.

7. A program product comprising:

a table that includes a plurality of instructions, the table being defined using a database manager that provides parallel execution of user-defined functions;

a user-defined function that executes the plurality of instructions in the table; a database operation that references the table and the user-defined function to provide parallel execution of the plurality of instructions in the table using the parallel execution of user-defined functions provided by the database manager;

a percent completion mechanism that computes percent completion of the user-defined function by dividing a number of completed rows in the table by a number of total rows in the table;

a suspend/resume mechanism that suspends the execution of the user-defined function when a currently-executing instruction is completed; and

recordable media bearing the table, the user-defined function, and the database operation, the percent completion mechanism, and the suspend/resume mechanism.

8. The program product of claim 7 wherein the user-defined function comprises a scalar function.

9. A program product comprising:

a table that includes a plurality of instructions, the table being defined using a database manager that provides parallel execution of user-defined functions;

a user-defined function that executes the plurality of instructions in the table;

a database operation that references the table and the user-defined function to provide parallel execution of the plurality of instructions in the table using the parallel execution of user-defined functions provided by the database manager;

a percent completion mechanism that computes percent completion of the user-defined function by dividing a number of completed rows in the table by a number of total rows in the table;

a suspend/resume mechanism that suspends the execution of the user-defined function when a currently-executing instruction is completed, and that resumes the execution of the user-defined function by commencing execution of a next instruction in the table; and

recordable media bearing the table, the user-defined function, the database operation, the percent completion mechanism, and the suspend/resume mechanism.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: LINKEDIN CORPORATION
Reel/Frame 035201/0479 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 8, 2004
From: ANDERSON, MARK JOHN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 014897/0158 →