IP Library Granted Patent US 7,761,407
Granted Patent B1
US 7,761,407 · App. 11/546,126 · Granted Jul 20, 2010

Use of primary and secondary indexes to facilitate aggregation of records of an OLAP data cube

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,761,407
App. No.
11/546,126
Granted
Jul 20, 2010
Kind
B1
Abstract

Systems or apparatus, methods, data structures and/or computer programs are provided for implementing an OLAP system that has increased query execution speed, requires reduced data storage capacity for an OLAP system and/or facilitates scaling of an OLAP system to large data cubes. The OLAP system can advantageously be implemented as an all-main memory OLAP system.

Claims (46)

1. A method for facilitating aggregation of records of an OLAP data cubs, each record of the OLAP data cube comprising a value for each of a plurality of atoms which each represent a variable of an OLAP system, wherein the records of the OLAP data cube are ordered in accordance with the values of first and second atoms for each record, thereby producing a sorted OLAP data Cube, such that each record having a specified value of the first atom is located in the sorted OLAP data cube in a contiguous group together with other records, if any, of the OLAP data cube having the same specified value of the first atom, and such that within each contiguous group of one or more records having the same specified value of the first atom, each record having a specified value of the second atom is located in a contiguous subgroup together with other records, if any, having the same specified value of the second atom, the method using a computer system to perform the steps of:

identifying a contiguous group of one or more records having a value of the first atom that matches a value of the first atom identified by a first filter data structure, wherein the contiguous group of one or more records is identified using a data structure that identifies each possible value of the first atom, together with the location in the sorted OLAP data cube of a first record of a contiguous group of one or more records having that value of the first atom;

identifying a record of the identified contiguous group having a value of the second atom that matches a value of the second atom identified by a second filter data structure;

successively evaluating one or more records of the identified contiguous group in a first direction away from the identified record, beginning with the record that is adjacent to the identified record in the first direction, to determine, for each evaluated record, whether the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, wherein:

if the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, the evaluated record is identified as a record to be included in the aggregation and the step of successively evaluating in a first direction continues with the next adjacent record in the first direction;

if the evaluated record does not have a value of the second atom that matches the value of the second atom identified by the second filter data structure, the step of successively evaluating in the first direction terminates;

successively evaluating one or more records of the identified contiguous group in a second direction away from the identified record that is opposite to the first direction, beginning with the record that is adjacent to the identified record in the second direction, to determine, for each evaluated record, whether the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, wherein:

if the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, the evaluated record is identified as a record to be included in the aggregation and the step of successively evaluating in the second direction continues with the next adjacent record in the second direction;

if the evaluated record does not have a value of the second atom that matches the value of the second atom identified by the second filter data structure, the step of, successively evaluating in the second direction terminates.

2. A method as in claim 1 , further comprising the step of the records of the OLAP data cube to produce the sorted OLAP data cube.

3. A method as in claim 2 , further comprising the step of aggregating the record or records identified for inclusion in the aggregation in the steps of successively evaluating.

4. A method as in claim 1 , further comprising the step or aggregating the record or, records identified for inclusion in the aggregation in the steps of successively evaluating.

5. A method as in claim 1 , wherein the step of identifying a record of the identified contiguous group comprises the step of performing a binary search to identify the record.

6. A method as in claim 1 , wherein the step of identifying a record of the identified contiguous group comprises the step of performing a dictionary search to identify the record.

7. A method as in claim 1 , wherein

the OLAP data cube, the first filter data structure and the second filter data structure are stored in a main memory.

8. A computer readable medium or media encoded with one or more computer programs and/or data structures for facilitating aggregation of records of an OLAP data cube, each record of the OLAP data cube comprising a value for each of a plurality of atoms which each represent a variable of an OLAP system, wherein the records of the OLAP data cube are ordered in accordance with the Values of first and second atoms for each record, thereby producing a sorted OLAP data cube, such that each record having a specified value of the first atom is located in the sorted OLAP data cube in a contiguous group together with other records, if any, of the OLAP data cube having the same specified value of the first atom, and such that within each contiguous group of one or more records having the same specified value of the first atom, each record having a specified value of the second atom is located on a contiguous subgroup together with other records, if any, having the same specified value of the second atom, the one or more computer programs and/or data structures, comprising:

instructions and/or data for identifying a contiguous group of one or more records having a value of the first atom that matches a value of the first atom identified by a first filter data structure, wherein the instructions and/or data comprise a data structure that identifies each possible value of the first atom, together with the location in the sorted OLAP data cube of a first record of a contiguous group of one or more records having that value of the first atom;

instructions and/or data for identifying a record of the identified contiguous group having a value of the second atom that matches a value of the second atom identified by a second filter data structure;

instructions and/or data for successively evaluating one or more records of the identified contiguous group in a first direction away from the identified record, beginning with the record that is adjacent to the identified record in the first direction, to determine, for each evaluated record, whether the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, wherein:

if the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, the evaluated record is identified as a record to be included in the aggregation and the successive evaluation in a first direction continues with the next adjacent record in the first direction;

if the evaluated record does not have a value or the second atom that matches the value of the second atom identified by the second filter data structure, the successive evaluation in the first direction terminates;

instructions and/or data for successively evaluating one or more records of the identified contiguous group in a second direction away from the identified record that is opposite to the first direction, beginning with the record that is adjacent to the identified record in the second direction, to determine, for each evaluated record, whether the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, wherein:

if the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, the evaluated record is identified as a record to be included in the aggregation and the successive evaluation in the second direction continues with the next adjacent record in the second direction;

if the evaluated record does not have a value of the second atom that matches the value of the second atom identified by the second filter data structure, the successive evaluation in the second direction terminates.

9. A computer readable storage medium or media as in claim 8 , further comprising instructions and/or data for ordering the records of the OLAP data cube to produce the sorted OLAP data cube.

10. A computer readable storage medium or media as in claim 9 , further comprising instructions and/or data for aggregating the record or records identified for inclusion in the aggregation by the instructions and/or data for successively evaluating.

11. A computer readable storage medium or media as in claim 8 , further comprising instructions and/or data for aggregating the record or records identified for inclusion in the aggregation by the instructions and/or data for successively evaluating.

12. A computer readable storage medium or media as in claim 8 , wherein the instructions and/or data for identifying a record or the identified contiguous group comprise instructions and/or data for performing a binary search to identify the record.

13. A computer readable storage medium or media as in claim 8 , wherein the instructions and/or data for identifying a record of the identified contiguous group comprise instructions and/or data for performing a dictionary search to identify the record.

14. A computer readable storage medium or media as in claim 8 , wherein the OLAP data cube, the first filter data structure and the second filter data structure are stored in a main memory.

15. A computer system for facilitating aggregation of records of an OLAP data cube, each record of the OLAP data cube comprising a value for each of a plurality of atoms which each represent a variable of an OLAP system, wherein the records of the OLAP data cube are ordered in accordance with the values of first and second atoms for each record, thereby producing a sorted OLAP data cube, such that each record having a specified value of the first atom is located in the sorted OLAP data cube in a contiguous group together with other records, if any, of the OLAP data cube having the same specified value of the first atom, and such that within each contiguous group of one or more records having the same specified value of the first atom, each record having a specified value of the second atom is located in a contiguous subgroup together with other records, if any, having the same specified value of the second atom, the computer system comprising a processing device and main memory for use in:

identifying a contiguous group of one or more records having a value of the first atom that matches a value of the first atom identified by a first filter data structure, wherein the contiguous group of one or more records is identified using a data structure that identifies each possible value of the first atom, together with the location in the sorted OLAP data cube of a first record of a contiguous group of one or more records having that value of the first atom;

identifying a record of the identified contiguous group having a value of the second atom that matches a value of the secondd atom identified by a second filter data structure;

successively evaluating one or more records of the identified contiguous group in a first direction away from the identified record, beginning with the record that is adjacent to the identified record in the first direction, to determine, for each evaluated record, whether the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, wherein:

if the evaluated record has a value of the second atom that matches the value or the second atom identified by the second filter data structure, the evaluated record is identified as a record to be included in the aggregation and the successive evaluation in a first direction continues with the next adjacent record in the first direction;

if the evaluated record does not have a value of the second atom that matches the value of the second atom identified by the second filter data structure, the successive evaluation in the first direction terminates;

successively evaluating one or more records of the identified contiguous group in a second direction away from the identified record that is opposite to the first direction, beginning with the record that is adjacent to the identified record in the second direction, to determine, for each evaluated record, whether the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, wherein:

if the evaluated record has a value of the second atom that matches the value of the second atom identified by the second filter data structure, the evaluated record is identified ac a record to be included in the aggregation and the successive evaluation in the second direction continues with the next adjacent record in the second direction;

if the evaluated record does not have a value of the second atom that matches the value of the second atom identified by the second filter data structure, the successive evaluation in the second direction terminates.

16. A computer system as in claim 15 , wherein the processing device and main memory are further for use in ordering the records of the OLAP data cube to produce the sorted CLAP data cube.

17. A computer system as in claim 16 , wherein the processing device and main memory are further for use in aggregating the record or records identified for inclusion in the aggregation by the successively evaluating.

18. A computer system as in claim 15 , wherein the processing device and main memory are further for use in aggregating the record or records identified for inclusion in the aggregation by the successively evaluating.

19. A computer system as in claim 15 , wherein the identifying a record of the identified contiguous group comprises performing a binary search to identify the record.

20. A computer system as in claim 15 , wherein the identifying a record of the identified contiguous group comprises performing a dictionary search to identify the record.

21. A computer system as in claim 15 , wherein the OLAP data cube, the first filter data structure and the second filter data structure are stored in the main memory.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Apr 13, 2022
From: WELLS FARGO BANK NA
To: MEDALLION, INC
Reel/Frame 059581/0865 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE LIST OF PATENT PROPERTY NUMBER TO INCLUDE TWO PATENTS THAT WERE MISSING FROM THE ORIGINAL FILING PREVIOUSLY RECORDED AT REEL: 057968 FRAME: 0430. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 1, 2021
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: MEDALLIA, INC.
Reel/Frame 057982/0092 →
SECURITY INTEREST Recorded Oct 29, 2021
From: MEDALLIA, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 057964/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 29, 2021
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: MEDALLIA, INC.
Reel/Frame 057968/0430 →
SECURITY INTEREST Recorded Jul 28, 2021
From: MEDALLIA, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057011/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2011
From: STERN, ULRICH
To: MEDALLIA, INC.
Reel/Frame 026347/0907 →