IP Library Granted Patent US 10,997,172
Granted Patent B2
US 10,997,172 · App. 16/266,985 · Granted May 4, 2021

Dual filter histogram optimization

Inventors: Thorvald Natvig (Palo Alto, CA); Santiago Perez (Buenos Aires, AR)
Assignee: Medallia, Inc.
G06F16/24542G06F16/2255
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 10,997,172
App. No.
16/266,985
Granted
May 4, 2021
Kind
B2
Abstract

A plurality of histograms are maintained with respect to a dataset. The dataset includes a plurality of data segments. In response to a query that includes a plurality of conditions ordered in an initial sequence, a plurality of corresponding rejection rates is determined for the plurality of conditions based at least in part on the plurality of histograms. The plurality of conditions are re-ordered according to the plurality of corresponding rejection rates associated with the plurality of conditions to form a reordered sequence for the plurality of conditions. The query is executed according to the reordered sequence of the plurality of conditions.

Claims (38)

1. A method, comprising:

determining a corresponding histogram hash value and a corresponding histogram shift value for each query condition of a plurality of query conditions included in a query;

determining a corresponding rejection rate for each query condition of the plurality of query conditions based on a smaller of the corresponding histogram hash value and the corresponding histogram shift value;

reordering a sequence of the plurality of query conditions based on rejection rates associated with the plurality of query conditions; and

executing the query according to the reordered sequence of the plurality of query conditions.

2. The method of claim 1 , further comprising receiving the query comprising the plurality of query conditions.

3. The method of claim 1 , wherein the corresponding histogram hash value for each query condition is based on a corresponding hash function.

4. The method of claim 3 , wherein the corresponding hash function is computed for a query condition comprised of a single value.

5. The method of claim 3 , wherein the corresponding hash function is computed for a query condition comprised of a range of values.

6. The method of claim 3 , wherein the corresponding hash function is a modulo hash function.

7. The method of claim 1 , wherein the corresponding histogram shift value for each query condition is based on a corresponding shift function.

8. The method of claim 7 , wherein the corresponding shift function is computed for a query condition comprised of a single value.

9. The method of claim 7 , wherein the corresponding shift function is computed for a query condition comprised of a range of values.

10. The method of claim 7 , wherein the corresponding shift function for a query condition is based on a range of stored values associated with the query condition.

11. The method of claim 10 , wherein the corresponding shift function is associated with a corresponding shift histogram, wherein the corresponding shift histogram is associated with a plurality of buckets, wherein the corresponding shift function is configured to modify a corresponding range associated with each of the plurality of buckets.

12. The method of claim 11 , wherein the corresponding range associated with each of the plurality of buckets is based on the range of stored values associated with the query condition.

13. The method of claim 1 , wherein a first query condition of the reordered sequence of the plurality of query conditions is a query condition having a highest rejection rate among the plurality of query conditions.

14. The method of claim 1 , wherein executing the query according to the reordered sequence of the plurality of query conditions further includes:

determining that a hash bit mask associated with a condition of the reordered sequence matches a corresponding hash bit mask of a data segment; and

comparing a hash bit mask associated with a next condition of the reordered sequence with a corresponding hash bit mask of the data segment.

15. The method of claim 1 , wherein executing the query according to the reordered sequence of the plurality of query conditions further includes:

determining that a hash bit mask associated with a condition of the reordered sequence does not match a corresponding hash bit mask of a data segment; and

skipping the data segment.

16. The method of claim 1 , wherein executing the query according to the reordered sequence of the plurality of query conditions further includes inspecting one or more data segments for one or more rows that match the query conditions of the reordered sequence.

17. A system, comprising:

a processor configured to:

determine a corresponding histogram hash value and a corresponding histogram shift values for each query condition of a plurality of query conditions included in a query;

determine a corresponding rejection rate for each query condition of the plurality of query conditions based on a smaller of the corresponding histogram hash value and the corresponding histogram shift value;

reorder a sequence of the plurality of query conditions based on rejection rates associated with the plurality of query conditions; and

execute the query according to the reordered sequence of the plurality of query conditions; and

a memory coupled to the processor and configured to provide the processor with instructions.

18. The system of claim 17 , wherein the processor is further configured to receive the query comprising the plurality of query conditions.

19. The system of claim 17 , wherein a first query condition of the reordered sequence of the plurality of query condition is a query condition having a highest rejection rate among the plurality of query conditions.

20. A computer program product, the computer program product being embodied in a non-transitory computer readable medium and comprising computer instructions for:

determining a corresponding histogram hash value and a corresponding histogram shift values for each query condition of a plurality of query conditions included in a query;

determining a corresponding rejection rate for each query condition of the plurality of query conditions based on a smaller of the corresponding histogram hash value and the corresponding histogram shift value;

reordering a sequence of the plurality of query conditions based on rejection rates associated with the plurality of query conditions; and

executing the query according to the reordered sequence of the plurality of query conditions.

Assignments (5)
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 →
Continuity (3)
Continuation 15608411 · May 30, 2017
Provisional Application 62431345 · Dec 7, 2016
Related Publication 20190243832A1 · Aug 8, 2019