IP Library Granted Patent US 10,762,281
Granted Patent B1
US 10,762,281 · App. 16/661,098 · Granted Sep 1, 2020

Prefix compression for keyed values

Inventor: John J. Delio, Jr. (Manchester, NH)
Assignee: Riverbed Technology, Inc.
G06F40/146G02B27/146G06F40/205H03M7/3059H03M7/405G06F16/134H03M5/00
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,762,281
App. No.
16/661,098
Granted
Sep 1, 2020
Kind
B1
Abstract

Systems and techniques are described for compressing strings by using a tree data structure. Specifically, for each string in a sequence of strings, the embodiments can traverse the tree data structure by matching characters of the string with characters associated with nodes of the tree data structure until either (1) all characters in the string have been processed, or (2) a current character in the string does not match a corresponding character in a current node of the tree data structure. Next, a first node identifier associated with the current node can be returned if all characters have been processed. Otherwise, a new node can be created in the tree data structure to store the remaining characters in the string, and a second node identifier associated with the new node in the tree data structure can be returned.

Claims (42)

1. A non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method, the method comprising:

initializing a tree data structure; and

for each string in a sequence of strings, performing a set of operations comprising:

traversing the tree data structure by matching characters of the string with characters associated with nodes of the tree data structure until either (1) all characters in the string have been processed, or (2) a current character in the string does not match a corresponding character in a current node of the tree data structure,

in response to determining that all characters in the string have been processed, returning a first node identifier associated with the current node, and

in response to determining that the current character in the string does not match the corresponding character in the current node of the tree data structure,

creating a new node in the tree data structure to store characters starting from the current character in the string to an end of the string, and

returning a second node identifier associated with the new node in the tree data structure.

2. The non-transitory computer-readable storage medium of claim 1 , wherein the tree data structure includes a root node upon said initializing the tree data structure, wherein the root nodes is not associated with any characters.

3. The non-transitory computer-readable storage medium of claim 2 , wherein the tree data structure comprises a set of nodes other than the root node, each node in the set of nodes is associated with a sequence of one or more characters.

4. The non-transitory computer-readable storage medium of claim 3 , wherein each node in the set of nodes is associated with a unique node identifier.

5. The non-transitory computer-readable storage medium of claim 3 , wherein the sequence of one or more characters is stored either in an internal buffer or in an external buffer, and wherein the node includes a flag indicating where the sequence of one or more characters is stored.

6. The non-transitory computer-readable storage medium of claim 5 , wherein multiple nodes in the tree data structure share the external buffer.

7. The non-transitory computer-readable storage medium of claim 3 , wherein each node in the set of nodes is either a leaf node or includes a reference to at least one additional node.

8. The non-transitory computer-readable storage medium of claim 7 , wherein the reference is a memory pointer that points to a memory location where the at least one additional node is stored.

9. The non-transitory computer-readable storage medium of claim 7 , wherein the nodes are stored in contiguous memory blocks, and wherein the reference is a number that indicates a position in the contiguous memory blocks.

10. The non-transitory computer-readable storage medium of claim 1 , wherein the method further comprises constructing a representation of the string, the representation including either (1) the first node identifier, or (2) a third node identifier associated with a parent of the new node and characters associated with the new node.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the method further comprises recreating the string from the representation of the string, said recreating comprising determining a sequence of one or more characters associated with the first node identifier or the third node identifier.

12. The non-transitory computer-readable storage medium of claim 1 , wherein the method comprises reinitializing the tree data structure once a size of the tree data structure is greater than a threshold.

13. The non-transitory computer-readable storage medium of claim 1 , wherein the tree data structure is stored as a collection of subtrees, each subtree storing a subset of nodes of tree data structure.

14. A method, comprising:

initializing a tree data structure; and

for each string in a sequence of strings, performing a set of operations comprising:

traversing the tree data structure by matching characters of the string with characters associated with nodes of the tree data structure until either (1) all characters in the string have been processed, or (2) a current character in the string does not match a corresponding character in a current node of the tree data structure,

in response to determining that all characters in the string have been processed, returning a first node identifier associated with the current node, and

in response to determining that the current character in the string does not match the corresponding character in the current node of the tree data structure,

creating a new node in the tree data structure to store characters starting from the current character in the string to an end of the string, and

returning a second node identifier associated with the new node in the tree data structure.

15. The method of claim 14 , further comprising constructing a representation of the string, the representation including either (1) the first node identifier, or (2) a third node identifier associated with a parent of the new node and characters associated with the new node.

16. The method of claim 15 , further comprising recreating the string from the representation of the string, said recreating comprising determining a sequence of one or more characters associated with the first node identifier or the third node identifier.

17. An apparatus, comprising:

a processor; and

a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the apparatus to perform a method, the method comprising:

initializing a tree data structure; and

for each string in a sequence of strings, performing a set of operations comprising:

traversing the tree data structure by matching characters of the string with characters associated with nodes of the tree data structure until either (1) all characters in the string have been processed, or (2) a current character in the string does not match a corresponding character in a current node of the tree data structure,

in response to determining that all characters in the string have been processed, returning a first node identifier associated with the current node, and

in response to determining that the current character in the string does not match the corresponding character in the current node of the tree data structure,

creating a new node in the tree data structure to store characters starting from the current character in the string to an end of the string, and

returning a second node identifier associated with the new node in the tree data structure.

18. The apparatus of claim 17 , wherein the method further comprises constructing a representation of the string, the representation including either (1) the first node identifier, or (2) a third node identifier associated with a parent of the new node and characters associated with the new node.

19. The apparatus of claim 18 , wherein the method further comprises recreating the string from the representation of the string, said recreating comprising determining a sequence of one or more characters associated with the first node identifier or the third node identifier.

Assignments (14)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 10, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059009/0906 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2020
From: RIVERBED TECHNOLOGY, INC.
To: ATERNITY LLC
Reel/Frame 054778/0540 →
PATENT SECURITY AGREEMENT Recorded Jun 17, 2020
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 052961/0427 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2019
From: DELIO, JOHN J., JR.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 050982/0511 →