IP Library Granted Patent US 11,829,398
Granted Patent B2
US 11,829,398 · App. 16/845,921 · Granted Nov 28, 2023

Three-dimensional probabilistic data structure

Inventors: Jacob Jonghan Park (St. Catharines, CA); Rohit Agrawal (San Francisco, CA); Thomas Fanghaenel (Oakland, CA)
Assignee: Salesforce, Inc.
G06F16/3346G06F16/1734G06F16/182G06F16/338G06F21/6218G06F2221/0751
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,829,398
App. No.
16/845,921
Granted
Nov 28, 2023
Kind
B2
Abstract

Techniques are disclosed relating to probabilistic data structures. A database node may maintaining a probabilistic data structure capable of encoding database keys. The probabilistic data structure may include a plurality of levels that are each capable of storing an indication of a transition between successive characters in a database key. The database node may insert a particular database key into the probabilistic data structure and the particular database key may comprise a series of characters. The inserting may include setting, for each transition between successive characters of the series of characters, an indication in a corresponding level of the plurality of levels that is indicative of that transition. The database node may further maintain lineage information specifying one or more lineages that correspond to the transition.

Claims (34)

1. A method, comprising;

maintaining, by a database node, a data structure used to encode a plurality of database keys, wherein the data structure includes a plurality of levels, each of which includes a character-addressable matrix that encodes transitions between characters;

inserting, by the database node, a database key into the data structure, wherein the database key comprises a series of characters with a plurality of transitions between two successive characters, wherein the inserting includes encoding the plurality of transitions across the plurality of levels such that different ones of the plurality of transitions are encoded in different ones of the plurality of levels, and wherein a given transition is encoded by setting, in a character-addressable matrix that corresponds to the given transition, an indication at a matrix location addressed using the two successive characters of the given transition; and

maintaining, in association with the indication by the database node, lineage information that specifies a set of database key lineages, a given one of which specifies one or more characters of a particular inserted database key that precede the two successive characters that are also in that particular inserted database key.

2. The method of claim 1 , wherein the lineage information is stored separately from the plurality of levels that include the indication, and wherein the indication is a pointer that identifies a location where the lineage information is stored.

3. The method of claim 1 , wherein each database key lineage maintained in association with the data structure identifies a same number of characters.

4. The method of claim 1 , wherein the indication, for the two successive characters, corresponds to at least two different database keys that have been inserted into the data structure.

5. The method of claim 4 , wherein the set of database key lineages includes a respective database key lineage for each of the at least two different database keys.

6. The method of claim 1 , further comprising:

sending, by the database node to a second database node, the data structure to enable the second database node to determine whether to request a database record from the database node; and

receiving, by the database node from the second database node, a second data structure that enables the database node to determine whether to request a database record from the second database node.

7. The method of claim 6 , further comprising:

determining, by the database node, whether to request a database record for a particular database key, wherein the determining includes:

determining whether the second data structure includes levels that store indications that are indicative of transitions between successive characters included in the particular database key; and

in response to determining that the second data structure includes levels storing indications that are indicative of the transitions between successive characters included in the particular database key, the database node sending a request to the second database node for a database record associated with the particular database key.

8. The method of claim 7 , wherein the determining whether to request a database record further includes:

calculating a plurality of database key lineages that correspond to the transitions between successive characters included in the particular database key; and

comparing the plurality of database key lineages against database key lineages maintained in association with the indications.

9. The method of claim 1 , wherein the inserting includes:

storing, in a corresponding level of the plurality of levels, an indication that is indicative of a transition from a last character of the series of characters to a terminal character separate from the series of characters.

10. A non-transitory computer readable medium having program instructions stored thereon that are capable of causing a computer system to perform operations comprising:

writing a database record to a particular location;

inserting a database key associated with the database record into a data structure, wherein the database key comprises a series of characters with a plurality of transitions between two successive characters, wherein the data structure includes a plurality of levels, each of which includes a character-addressable matrix that is capable of encoding one of the plurality of transitions, and wherein the inserting includes:

encoding the plurality of transitions across the plurality of levels such that different ones of the plurality of transitions are encoded in different ones of the plurality of levels, wherein a given transition is encoded by setting, in the character-addressable matrix that corresponds to the given transition, an indication at a matrix location addressed using the two successive characters of the given transition;

maintaining lineage information in association with the indication, wherein the lineage information specifies a set of database key lineages, a given one of which specifies one or more characters of a particular inserted database key that precede the two successive characters that are also in that particular inserted database key; and

sending, to another computer system, the data structure to enable the other computer system to determine whether to request a database record from the particular location.

11. The non-transitory computer readable medium of claim 10 , wherein the indication identifies the lineage information.

12. The non-transitory computer readable medium of claim 10 , wherein the operations further comprise:

prior to inserting the database key into the data structure, allocating the data structure such that a particular character-addressable matrix in the plurality of levels has a particular memory size;

prior to sending the data structure to the other computer system, performing a compression operation on the data structure, wherein the compression operation includes:

determining that a memory size of data written to the particular character-addressable matrix does not consume a threshold amount of the particular memory size; and

replacing the particular character-addressable matrix with particular data in another format, wherein the particular data is indicative of the data written to the particular character-addressable matrix.

13. The non-transitory computer readable medium of claim 10 , wherein the operations further comprise:

in response to inserting a threshold number of database keys into the data structure, creating a second data structure in which to insert subsequent database keys.

Assignments (2)
CHANGE OF NAME Recorded Sep 13, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 064896/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2020
From: PARK, JACOB JONGHAN; AGRAWAL, ROHIT; FANGHAENEL, THOMAS
To: SALESFORCE.COM, INC.
Reel/Frame 052368/0359 →
Continuity (1)
Related Publication 20210319052A1 · Oct 14, 2021