# US 7,921,130 B2 · Optimized database appliance

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

- Number: US 7,921,130 B2
- Document ID: US7921130B2
- Status: Granted
- Kind: B2
- Application number: 12/288,160
- Filed: 2008-10-15
- Published: 2009-05-21
- Granted: 2011-04-05
- Earliest claimed: 2002-05-13
- Assignees: Netezza Corporation
- Inventors: Foster D. Hinshaw; John K. Metzger; Barry M. Zane
- Web page: https://patentgrep.com/patent/US7921130B2

## CPC

- G06F 16/2471: {Distributed queries}
- Y10S 707/99932: Access augmentation or optimizing
- Y10S 707/99933: Query processing, i.e. searching
- Y10S 707/99942: Manipulating data structure, e.g. compression, compaction, compilation
- Y10S 707/99943: Generating database or data structure, e.g. via user interface
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A system and method from processing database queries allows for cost and locale based distribution for execution of database queries. The database queries are executed on execution engines that provide flexible configuration and overlapping functionality. The system reduces various costs, including elapsed time, required to perform database queries. The method provides processing of a database query using a database catalog comprising database table locality information, record locality information and execution engine information. A query optimizer receives the query and accesses the catalog to create a query execution plan comprising locality-based database operations. A central database operation processor providing a first execution engine executes the query execution plan by performing at least a portion of the locality-based database operations and distributing at least a portion of the locality-based database operations as a subplan. A second database operation processor providing a second execution engine executes the subplan received from the central processor.

## Claims

### Claim 1

A method for processing a query on a database, comprising:
receiving a query;
accessing a database catalog to develop a query execution plan by a first database, the database catalog including database table information, database operation processor component locale information, and database operation processor characteristic information, the query execution plan defining a list of database operations to carry out the query, the query execution plan also defining a respective database operation processor component locale for each such database operation;
executing portions of the query execution plan designated to be handled by the first database and forwarding at least a selected portion of the query execution plan to a second database operation processor component having different operation processing capabilities than the first database operation processor component; and
executing portions of the query execution plan designated for the second database and forwarding other selected portions of the query execution plan to a third database operation component for execution.

### Claim 2 (depends on 1)

The method of claim 1 further comprising storing at least a portion of database tables and records in a storage unit.

### Claim 3 (depends on 1)

The method of claim 1 wherein executing portions of the query execution plan designated to be handled by the first database is utilizing a symmetric multi-processing system.

### Claim 4 (depends on 1)

The method of claim 1 wherein executing portions of the query execution plan designated for the second database is utilizing a massively parallel processing system.

### Claim 5 (depends on 1)

The method of claim 1 wherein executing portions of the query execution plan designated to be handled by the first or second database includes processing data records received from a storage unit by performing one or more operations on the data records without materializing the data record into a memory.

### Claim 6 (depends on 1)

The method of claim 1 wherein executing portions of the query execution plan designated to be handled by the first or second database includes processing data records received from a data communications network by performing one or more operations on the data records without materializing the data record into a memory.

### Claim 7 (depends on 1)

The method of claim 1 wherein executing portions of the query execution plan designated to be handled by the first or second database includes dynamically reconfiguring an assigned execution subplan for redirecting one or more operations to the third execution engine, so that the query execution plan is re-optimized while still being executed.

### Claim 8 (depends on 1)

The method of claim 1 wherein the first database operation processor component, the second database operation processor component, and the third database operation processor component have different processing capabilities selected from a group of processing capabilities consisting of execution engine memory, execution engine processor speed, cache configuration, disk speed, disk controller speed, disk controller bandwidth, network interface bandwidth or network interface speed.

### Claim 9 (depends on 1)

The method of claim 1 wherein the first database operation processor component or the second database operation processor component reconfiguring an executing subplan.

### Claim 10 (depends on 1)

The method of claim 1 wherein the first database operation processor component comprises a general purpose central processing unit.

### Claim 11 (depends on 1)

The method of claim 1 wherein the second database operation processor component comprises an application specific integrated circuit.

### Claim 12 (depends on 1)

The method of claim 1 wherein the third database operation processor component comprises a field programmable gate array.

### Claim 13 (depends on 1)

The method of claim 1 further including tracking performance results from the query and reallocating the database tables and records to improve query execution.

### Claim 14 (depends on 13)

The method of claim 13 wherein reallocating the database tables and records includes striping the database tables and records.

### Claim 15 (depends on 13)

The method of claim 13 wherein reallocating the database tables and records includes replicating the database tables and records.

### Claim 16 (depends on 1)

The method of claim 1 further including tracking performance results from the executing queries and modifying the query execution plan for improving performance.

### Claim 17 (depends on 1)

The method of claim 1 further including tracking system configuration and resource utilization from the executing queries and modifying the query execution plan for improving system resource utilization.

### Claim 18

A system to process a query on a database, comprising:
means for receiving a query;
means for accessing a database catalog to develop a query execution plan by a first database, the database catalog including database table information, database operation processor component locale information, and database operation processor characteristic information, the query execution plan defining a list of database operations to carry out the query, the query execution plan also defining a respective database operation processor component locale for each such database operation;
means for executing portions of the query execution plan designated to be handled by the first database and forwarding at least a selected portion of the query execution plan to a second database operation processor component having different operation processing capabilities than the first database operation processor component; and
means for executing portions of the query execution plan designated for the second database and forwarding other selected portions of the query execution plan to a third database operation component for execution.

### Claim 19 (depends on 18)

The system of claim 18 further comprising means for storing at least a portion of database tables and records in a storage unit.

### Claim 20 (depends on 18)

The system of claim 18 wherein means for executing portions of the query execution plan designated to be handled by the first database is utilizing a symmetric multi-processing system.

### Claim 21 (depends on 18)

The system of claim 18 wherein means for executing portions of the query execution plan designated for the second database is utilizing a massively parallel processing system.
