Relational database system and method for query processing using early aggregation
First Claim
1. A relational database system comprising:
- a non-volatile memory;
a volatile memory for temporarily storing a set of data records, the volatile memory having an amount of space available for query processing;
a query processor coupled to the non-volatile and volatile memories to process a query of the data records according to at least one query parameter, the query processor being configured to partition the data records into multiple buckets for query processing using the available space in the volatile memory; and
the query processor being configured to aggregate data records having like query parameters and to occasionally select ones of the data records for writing to the non-volatile memory to free up part of the available space to receive additional data records, the query processor selecting the data records for writing to the non-volatile memory according to how likely the data records will aggregate, if left in the buckets, with the data records to be added.
2 Assignments
0 Petitions
Accused Products
Abstract
A relational database system has a non-volatile memory, a volatile memory for temporarily storing a set of data records, and a query processor. The volatile memory has an amount of available space for query processing that is segmented into multiple memory pages. Initially, these memory pages are empty and available in a pool for use by the query processor. The query processor establishes a partition table that defines multiple partitions. The query processor partitions incoming data records into the partitions according to a hashing function and stores the data records in memory pages associated with the partitions. As a new data record placed into a particular partition, the query processor attempts to aggregate the new data record with any like data record that already exists in the particular partition. If no like data record exists, the data record is stored separately on the memory page within the partition. In the event that a memory page of the partition becomes filled, the query processor retrieves an empty memory page from the free pool and assigns that empty memory page to the needy partition. In the event that no free memory pages are left in the pool, the query processor selects a memory page from any one of the partitions and writes the data records on the selected memory page to the non-volatile memory to free the memory page. The query processor selects the memory page according to selection criteria that favors output of full memory pages over partially filled memory pages and that favors memory pages with a low absorption rate. Data records with low activity are written to non-volatile memory in the interest of preserving data records with high absorption rates on the memory pages with the hope of absorbing future data records.
-
Citations
57 Claims
-
1. A relational database system comprising:
-
a non-volatile memory; a volatile memory for temporarily storing a set of data records, the volatile memory having an amount of space available for query processing; a query processor coupled to the non-volatile and volatile memories to process a query of the data records according to at least one query parameter, the query processor being configured to partition the data records into multiple buckets for query processing using the available space in the volatile memory; and the query processor being configured to aggregate data records having like query parameters and to occasionally select ones of the data records for writing to the non-volatile memory to free up part of the available space to receive additional data records, the query processor selecting the data records for writing to the non-volatile memory according to how likely the data records will aggregate, if left in the buckets, with the data records to be added. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A relational database system comprising:
-
a non-volatile memory; a volatile memory for temporarily storing a set of data records, the volatile memory having an amount of space available for query processing; a query processor coupled to the non-volatile and volatile memories to process a query of the data records according to at least one query parameter, the query processor being configured to partition the data records into multiple buckets for query processing using the available space in the volatile memory; and the query processor being configured to aggregate data records having like query parameters and to occasionally select ones of the data records for writing to the non-volatile memory to free up part of the available space to receive additional data records, the query processor selecting the data records for writing to the non-volatile memory from any one of the buckets. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A relational database system comprising:
-
a volatile memory for temporarily storing a set of data records for query processing; a query processor coupled to the volatile memory to process a query of the data records, the query processor being configured to partition the data records into multiple partitions using a hash partitioning table, the hash partitioning table having entries that reference the partitions; and the query processor being configured to create a second hash table separate from the partitioning table that has entries that reference individual data records within the partitions, the separate hash table being used to lookup matching data records for aggregation.
-
-
23. A relational database system comprising:
-
a non-volatile memory; a volatile memory for temporarily storing a set of data records, the volatile memory having an amount of available space segmented into multiple memory pages; a query processor coupled to the non-volatile and volatile memories to process a series of data records, the query processor being configured to partition the data records into multiple partitions and store the data records in one or more memory pages associated with the partitions; as a new data record is processed into a particular partition, the query processor being configured to alternately aggregate the new data record with a like data record already existing in the particular partition or store the data record separately within the particular partition; in an event that a memory page of the particular partition becomes full, the query processor assigns an additional memory page to the particular partition; and in an event that no free memory pages are left to assign, the query processor selects a memory page from any one of the partitions, writes the data records on the selected memory page to the non-volatile memory to empty the memory page, and moves the emptied memory page to the particular partition. - View Dependent Claims (24, 25, 26, 27)
-
-
28. A relational database computer program embodied on a computer-readable medium comprising:
-
partitioning code to partition data records into multiple partitions; aggregation code to aggregate within respective partitions like data records; and victim selection code to select at least one data record to write to non-volatile memory to free space in the partitions for future data records, the victim selection code selecting the data record according to how likely that data record will aggregate, if left in its respective partition, with the future data records. - View Dependent Claims (29, 30, 31, 32)
-
- 33. In a relational database system having data records that are partitioned into partitions and aggregated within the partitions, a query processing program executable on the relational database system to remove at least one data record that has the least absorption rate from a partition.
- 37. In a relational database system having data records that are partitioned into partitions and aggregated within the partitions, a query processing program executable on the relational database system to add data records to respective partitions until an overflow condition in a particular partition is reached indicating that that memory space available for the partitions is full, the query processing program removing at least one data record from any one of the partitions to free memory space to receive future data records.
- 41. In a relational database system having multiple memory pages for holding data records that are separated into predefined partitions, a query processing program executable on the relational database system to move empty memory pages among the partitions.
-
44. A method for processing a query, comprising the following steps:
-
partitioning data records into multiple partitions; aggregating within respective partitions like data records; and selecting at least one data record to write to non-volatile memory to free space in the partitions for future data records according to how likely that data record will aggregate, if left in its respective partition, with the future data records. - View Dependent Claims (45, 46, 47, 48, 49, 50)
-
-
51. In a relational database system having multiple memory pages for holding data records that are separated into predefined partitions, a method for processing a query of the data records, comprising the following steps:
-
partitioning a new data record into one of the partitions; if a like data record already exists in the partition, aggregating the new data record with the like data record and otherwise storing the data record separately within the partition; in an event that a memory page of the partition is full and cannot accept the new data entry, adding a next memory page to the partition; and in an event that no free memory pages are left to add, selecting a memory page from any one of the partitions according to a selection criteria that favors output of full memory pages over partially filled memory pages and that favors memory pages with low absorption rates and writing the data records on the selected memory page to non-volatile memory to empty the memory page. - View Dependent Claims (52, 53, 54, 55, 56, 57)
-
Specification