Nova Patents
EP1544753A1

Partitioned database system

Abstract

A system and method for dividing a received database query into a number of parallel subqueries and then submitting the parallel subqueries to a database management system in place of the received query. During database configuration, an embodiment of the invention ensures that a database table includes a partitioning field populated with random numbers. Each time a record is added to the table, an embodiment fills the partitioning field with a new random number. When a query on the database table is received, an embodiment determines a number of parallel subqueries to submit in place of the received query. Each of the parallel subqueries is constructed based on the initially received query combined with an additional constraint on the partitioning field such that the set of parallel subqueries together span the entire range of the random numbers in the partitioning field, and yet each of the parallel subqueries describes a discrete non-overlapping range of the partitioning field. The constraint on the partitioning field (i.e., the size of each range of random numbers) may be determined by trial queries on the database. Finally, an embodiment submits the parallel subqueries to the database management system in place of the received query.

EP1544753A1, drawing sheet 1
Sheet 1 of 7

Term

Term ended

Projected expiry passed 29 November 2024, 1.8 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

19 claims: 8 independent, 11 dependent

  1. 1
    A method of parallelizing a database query, comprising:dividing a received query on a database table into a number of parallel subqueries, each parallel subquery including a discrete non-overlapping range constraint on a partitioning field of the database table;and submitting the parallel subqueries to a database management system in place of the received query.
  2. 7
    The method of one of claims 1 to 6, wherein the database query comprises an SQL statement.
  3. 8
    The method of one of claims 1 to 7, further comprising:extending each record of the database table to include the partitioning field;and populating the partitioning field of each record with a random number produced by a random number generator having a substantially uniform distribution.
  4. 9
    The method of one of claims 1 to 8, further comprising:receiving individual results of each parallel subquery;and separately supplying each of the individual results to subsequent parallel operations.
  5. 10
    The method of one of claims 1 to 9, wherein the number of parallel subqueries is determined by a method comprising:setting the number of parallel subqueries based on the received query and a preferred number of database records to be processed by each parallel subquery;issuing a trial database query having a trial range constraint based on the set number of parallel subqueries, said trial database query returning a trial count of matching database records;and adjusting the number of parallel subqueries until the trial count falls within a predetermined tolerance factor.
  6. 11
    A method of parallelizing a computer processing operation, comprising:dividing the operation into a number of packages;separating each package into a query stage and a processing stage, each query stage including a discrete non-overlapping range constraint on a partitioning field of a database;submitting all of the query stages to a database management system substantially in parallel;and providing the results of each query stage to its corresponding processing stage.
  7. 13
    A computer programmed to parallelize a database query, comprising:means to divide a received query on a database table into a number of parallel subqueries, each parallel subquery including a discrete non-overlapping range constraint on a partitioning field of the database table;and means to submit the parallel subqueries to a database management system in place of the received query.
  8. 16
    The computer of one of claims 13 to 15, further comprising:means to receive individual results of each parallel subquery;and means to supply each of the individual results to subsequent parallel operations.
  9. 17
    A machine-readable medium having stored thereon a plurality of instructions for parallelizing a database query, the plurality of instructions comprising instructions to perform a method according to any one of the claims 1 to 12.
  10. 18
    A computer program comprising computer readable instructions for parallelizing a database query, the plurality of instructions comprising instructions to perform a method according to any one of the claims 1 to 12.
  11. 19
    A computer system, including:a processor coupled to a network;an electronic file storage device coupled to the processor;and a memory coupled to the processor, the memory containing a plurality of executable instructions to implement a method according to any one of claims 1 to 12.