IP Library › Granted Patent US 11,169,995
Granted Patent B2
US 11,169,995 · App. 15/819,193 · Granted Nov 9, 2021

Relational dictionaries

Inventors: Pit Fender (Union City, CA); Seema Sundara (Nashua, NH); Benjamin Schlegel (Merced, CA); Nipun Agarwal (Saratoga, CA)
Assignee: Oracle International Corporation
G06F16/24545G06F16/211G06F16/212G06F16/2282G06F16/2456
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 11,169,995
App. No.
15/819,193
Granted
Nov 9, 2021
Kind
B2
Abstract

Techniques related to relational dictionaries are disclosed. In some embodiments, one or more non-transitory storage media store a sequence of instructions which, when executed by one or more computing devices, cause performance of a method. The method involves storing a code dictionary comprising a set of tuples. The code dictionary is a database table defined by a database dictionary and comprises columns that are each defined by the database dictionary. The set of tuples maps a set of codes to a set of tokens. The set of tokens are stored in a column of unencoded database data. The method further involves generating encoded database data based on joining the unencoded database data with the set of tuples. Furthermore, the method involves generating decoding database data based on joining the encoded database data with the set of tuples.

Claims (39)

1. A method comprising:

for each encoding pattern of a plurality of encoding patterns, each encoding pattern of said plurality of encoding patterns being implemented by at least a respective plurality of queries, the respective plurality of queries comprising one or more queries for generating a first code dictionary, invoking a query optimizer to determine a respective cost for the respective plurality of queries;

selecting a particular encoding pattern of said plurality of encoding patterns that has a lower respective cost than any other encoding pattern of said plurality of encoding patterns, said particular encoding pattern including particular one or more queries for generating a first set of tuples that maps a first set of codes to a first set of tokens stored in a first column of unencoded database data, said first code dictionary being a database table defined by a database dictionary and comprising columns that are each defined by said database dictionary;

executing said one or more particular queries to generate said first set of tuples;

generating encoded database data based on joining said unencoded database data with said first set of tuples;

generating decoded database data based on joining said encoded database data with said first set of tuples; and

wherein the method is performed by one or more computing devices.

2. The method of claim 1 , wherein for each respective plurality of queries for each encoding pattern of said plurality of encoding patterns, said each respective plurality of queries comprises one or more queries for generating a second code dictionary comprising a second set of tuples that maps a second set of codes to a second set of tokens stored in a second column of said unencoded database data.

3. The method of claim 1 , wherein executing said one or more particular queries includes:

determining said first set of tokens based on de-duplicating tokens stored in said first column of said unencoded database data;

determining said first set of codes based on performing a ranking function on said first set of tokens.

4. The method of claim 1 , wherein executing said one or more particular queries includes:

a query that generates a temporary first code dictionary, said temporary first code dictionary being used to generate said encoded database data; and

a query that generates said first code dictionary based on de-duplicating tokens stored in said temporary first code dictionary.

5. The method of claim 4 , wherein said temporary first code dictionary comprises row identifiers for said unencoded database data, and wherein said encoded database data is generated based on joining on said row identifiers.

6. The method of claim 4 , wherein said unencoded database data is partitioned across a plurality of database nodes, wherein said temporary first code dictionary comprises database node identifiers for said unencoded database data, and wherein said encoded database data is generated based on joining on said database node identifiers.

7. The method of claim 1 , further comprising prior to generating said encoded database data, storing a second code dictionary comprising a second set of tuples that maps a second set of codes to a second set of tokens stored in a second column of said unencoded database data, wherein said first code dictionary and said second code dictionary are generated based on different encoding patterns.

8. The method of claim 1 , wherein generating said decoded database data comprises determining said first set of tuples based on evaluating a query predicate over said first code dictionary.

9. The method of claim 1 , further comprising after generating said decoded database data, evaluating a query predicate over said decoded database data.

10. One or more non-transitory storage media storing a sequence of instructions which, when executed by one or more computing devices, cause:

for each encoding pattern of a plurality of encoding patterns, each encoding pattern of said plurality of encoding patterns being implemented by at least a respective plurality of queries, the respective plurality of queries comprising one or more queries for generating a first code dictionary, invoking a query optimizer to determine a respective cost for the respective plurality of queries;

selecting a particular encoding pattern of said plurality of encoding patterns that has a lower respective cost than any other encoding pattern of said plurality of encoding patterns, said particular encoding pattern including particular one or more queries for generating a first set of tuples that maps a first set of codes to a first set of tokens stored in a first column of unencoded database data, said first code dictionary being a database table defined by a database dictionary and comprising columns that are each defined by said database dictionary;

executing said one or more particular queries to generate said first set of tuples;

generating encoded database data based on joining said unencoded database data with said first set of tuples; and

generating decoded database data based on joining said encoded database data with said first set of tuples.

11. The one or more non-transitory storage media of claim 10 , wherein for each respective plurality of queries for each encoding pattern of said plurality of encoding patterns, said each respective plurality of queries comprises one or more queries for generating a second code dictionary comprising a second set of tuples that maps a second set of codes to a second set of tokens stored in a second column of said unencoded database data.

12. The one or more non-transitory storage media of claim 10 , wherein executing said one or more particular queries includes:

determining said first set of tokens based on de-duplicating tokens stored in said first column of said unencoded database data;

determining said first set of codes based on performing a ranking function on said first set of tokens.

13. The one or more non-transitory storage media of claim 10 , wherein executing said one or more particular queries includes:

a query that generates a temporary first code dictionary, said temporary first code dictionary being used to generate said encoded database data; and

a query that generates said first code dictionary based on de-duplicating tokens stored in said temporary first code dictionary.

14. The one or more non-transitory storage media of claim 13 , wherein said temporary first code dictionary comprises row identifiers for said unencoded database data, and wherein said encoded database data is generated based on joining on said row identifiers.

15. The one or more non-transitory storage media of claim 13 , wherein said unencoded database data is partitioned across a plurality of database nodes, wherein said temporary first code dictionary comprises database node identifiers for said unencoded database data, and wherein said encoded database data is generated based on joining on said database node identifiers.

16. The one or more non-transitory storage media of claim 10 , wherein said sequence of instructions further comprise instructions which, when executed by said one or more computing devices, cause:

prior to generating said encoded database data, storing a second code dictionary comprising a second set of tuples that maps a second set of codes to a second set of tokens stored in a second column of said unencoded database data,

wherein said first code dictionary and said second code dictionary are generated based on different encoding patterns.

17. The one or more non-transitory storage media of claim 10 , wherein generating said decoded database data comprises determining said first set of tuples based on evaluating a query predicate over said first code dictionary.

18. The one or more non-transitory storage media of claim 10 , wherein said sequence of instructions further comprise instructions which, when executed by said one or more computing devices, cause, after generating said decoded database data, evaluating a query predicate over said decoded database data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2017
From: FENDER, PIT; SUNDARA, SEEMA; SCHLEGEL, BENJAMIN; AGARWAL, NIPUN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 044189/0883 →
Continuity (1)
Related Publication 20190155930A1 · May 23, 2019
Cited By (1)
US 12,199,957