IP Library Granted Patent US 11,899,641
Granted Patent B2
US 11,899,641 · App. 17/549,570 · Granted Feb 13, 2024

Trie-based indices for databases

Inventor: Branimir Zdravkov Lambov (Nesebar, BG)
Assignee: DataStax, Inc.
G06F16/2246C07D209/86G06F16/2255H10K85/624H10K85/626H10K85/6572H10K50/15H10K50/17
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,899,641
App. No.
17/549,570
Granted
Feb 13, 2024
Kind
B2
Abstract

A database system uses byte ordering for keys and a trie index to reference stored data. The keys of a database are converted into byte-comparable sequences of byte values. The trie index is generated including nodes connected by edges defining paths from a root node to leaf nodes. Each edge is associated with at least one byte value such that each path from the root node to a leaf node through one or more edges defines a unique byte prefix for a byte-comparable sequence of byte values. The leaf node of each path is associated with a database location value. A record is accessed in the database using a database location value determined from referencing the trie index using a byte-comparable sequence of byte values of the record generated from a key of the record. A trie structure and byte ordered keys may be used for partition or row indices.

Claims (43)

1. A database system, comprising:

a cluster of database nodes that stores a distributed database, each database node storing one or more partitions of the distributed database, each partition including a set of database rows, each database node including:

one or more processors; and

a memory storing instructions that, when executed by the one or more processors, cause the one or more processors to:

access a key for a record including a partition key and a clustering key;

convert the key into a byte-comparable sequence of byte values comprising a first portion of the byte-comparable sequence of bytes obtained from the partition key and a second portion of the byte-comparable sequence of bytes obtained from the clustering key;

reference a partition trie index using the byte-comparable sequence of byte values of the record generated from the key to determine a partition of the distributed database; and

access the record from the partition of the distributed database.

2. The database system of claim 1 , wherein the instructions when executed by the one or more processors, cause the one or more processors to:

access the partition trie index using the first portion of the byte-comparable sequence.

3. The database system of claim 1 , wherein the instructions when executed by the one or more processors, cause the one or more processors to:

access a row trie index using the second portion of the byte-comparable sequence.

4. The database system of claim 3 , wherein the partition trie index and the row trie index provide an index of records stored in the rows and columns of a partition.

5. The database system of claim 3 , wherein the partition trie index and the row trie index each comprise a trie data structure that describes a mapping between sequences of byte values and database location values of the database.

6. The database system of claim 3 , wherein the partition trie index maps to database location values of the row trie index.

7. The database system of claim 6 , wherein the row trie index maps to database location values of the rows.

8. A non-transitory computer readable memory storing instructions that, when executed by one or more processors, cause the one or more processors to:

store a distributed database in a cluster of database nodes, each database node storing one or more partitions of the distributed database, each partition including a set of database rows, each database node including:

access a key for a record including a partition key and a clustering key;

convert the key into a byte-comparable sequence of byte values comprising a first portion of the byte-comparable sequence of bytes obtained from the partition key and a second portion of the byte-comparable sequence of bytes obtained from the clustering key;

reference a partition trie index using the byte-comparable sequence of byte values of the record generated from the key to determine a partition of the distributed database; and

access the record from the partition of the distributed database.

9. The computer readable memory of claim 8 , wherein the instructions when executed by the one or more processors, cause the one or more processors to:

access a partition trie index using the first portion of the byte-comparable sequence.

10. The computer readable memory of claim 8 , wherein the instructions when executed by the one or more processors, cause the one or more processors to:

access a row trie index using the second portion of the byte-comparable sequence.

11. The computer readable memory of claim 10 , wherein the partition trie index and the row trie index provide an index of records stored in the rows and columns of a partition.

12. The computer readable memory of claim 10 , wherein the partition trie index and the row trie index each comprise a trie data structure that describes a mapping between sequences of byte values and database location values of the database.

13. The computer readable memory of claim 10 , wherein the partition trie index maps to database location values of the row trie index.

14. The computer readable memory of claim 13 , wherein the row trie index maps to database location values of the rows.

15. A method, comprising:

storing a distributed database in a cluster of database nodes, each database node storing one or more partitions of the distributed database, each partition including a set of database rows, each database node including:

accessing a key for a record including a partition key and a clustering key;

converting the key into a byte-comparable sequence of byte values comprising a first portion of the byte-comparable sequence of bytes obtained from the partition key and a second portion of the byte-comparable sequence of bytes obtained from the clustering key;

referencing a partition trie index using the byte-comparable sequence of byte values of the record generated from the key to determine a partition of the distributed database; and

accessing the record from the partition of the distributed database.

16. The method of claim 15 , further comprising:

accessing a partition trie index using the first portion of the byte-comparable sequence.

17. The method of claim 15 , further comprising:

accessing a row trie index using the second portion of the byte-comparable sequence.

18. The method of claim 17 , wherein the partition trie index and row trie index provide an index of records stored in the rows and columns of a partition.

19. The method of claim 17 , wherein the partition trie index and the row trie index each comprise a trie data structure that describes a mapping between sequences of byte values and database location values of the database.

20. The method of claim 17 , wherein the partition trie index maps to database location values of the row trie index and the row trie index maps to database location values of the rows.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2025
From: DATASTAX, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 072198/0047 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2022
From: LAMBOV, BRANIMIR ZDRAVKOV
To: DATASTAX, INC.
Reel/Frame 060301/0681 →