IP Library Granted Patent US 10,817,510
Granted Patent B1
US 10,817,510 · App. 14/480,558 · Granted Oct 27, 2020

Systems and methods for navigating through a hierarchy of nodes stored in a database

Inventor: Tim Haynes (Berkshire, GB)
Assignee: Veritas Technologies LLC
G06F16/2453
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,817,510
App. No.
14/480,558
Granted
Oct 27, 2020
Kind
B1
Abstract

The disclosed computer-implemented method for navigating through a hierarchy of nodes stored in a database may include (1) receiving a request to access a database that stores a set of nodes organized in a hierarchy, wherein the hierarchy is divided into contiguous subsections and each subsection is stored in a separate page and (2) in response to the request, traversing a path through the hierarchy of nodes by (a) identifying an initial node in the path and looking up an initial page that contains the initial node, (b) loading the page from the database into local memory, the page including the initial node in the path and one or more subsequent nodes in the path, and (c) navigating to the one or more subsequent nodes in the path by accessing the page loaded into local memory instead of accessing the database. Additional methods, systems, and computer-readable media are also disclosed.

Claims (83)

1. A computer-implemented method for navigating through a hierarchy of nodes stored in a database, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

dividing a set of nodes organized in a hierarchy into contiguous subsections by:

selecting a number of nodes to allocate to each subsection based at least in part on an amount of time involved in loading the number of nodes into local memory from a database;

storing each subsection in a separate page within the database, wherein each node in the hierarchy represents at least one of: a child node descended from a parent node, a parent node with at least one child node, or a root node that represents a highest parent node on a path within a page, and each node within the hierarchy is uniquely identified by a primary key; and

storing within each node at least one association between the node and each related parent node, child node, or root node by storing within the node the primary key of each related node;

receiving a request to access nodes within the database;

in response to the request, traversing a path through the hierarchy of nodes by:

identifying an initial node in the path and looking up an initial page that contains the initial node and one or more subsequent nodes in the path;

loading the initial page from the database into local memory such that each node contained in the initial page is accessible via local memory;

compressing contents of the initial page by serializing each node within the initial page into a single field within a page table;

navigating to the one or more subsequent nodes in the path by accessing the nodes loaded into local memory instead of accessing the database; and

storing a page key of a subsequent page within at least one of a root node within the initial page or a lowest node on the path within the initial page.

2. The method of claim 1 , wherein the path comprises nodes distributed across multiple servers.

3. The method of claim 1 , wherein selecting the number of nodes to allocate to each subsection is based further on at least one of:

a total number of nodes within the hierarchy of nodes; and

a frequency with which nodes within the hierarchy of nodes are modified.

4. The method of claim 1 , wherein:

each page that stores a subsection of nodes is uniquely identified by a separate page key.

5. The method of claim 4 , further comprising:

while traversing the path through the hierarchy of nodes, determining that the one or more subsequent nodes in the path is stored on the subsequent page; and

navigating to the one or more subsequent nodes by loading the subsequent page into local memory.

6. The method of claim 5 , wherein:

each parent node that has a child node on a separate page stores the page key of the page that stores the child node;

traversing the path through the hierarchy of nodes comprises traversing a path down the hierarchy of nodes; and

loading the subsequent page into local memory comprises identifying, within the lowest node on the path within the initial page, the page key of the subsequent page.

7. The method of claim 5 , wherein:

traversing the path through the hierarchy of nodes comprises traversing a path up the hierarchy of nodes; and

loading the subsequent page into local memory comprises:

identifying the primary key of the one or more subsequent nodes within the root node of the page that, for each page, stores the primary key of the parent node of the root node of the page; and

using the primary key of the one or more subsequent nodes to look up the page key of the subsequent page.

8. The method of claim 5 , wherein storing the page key of the subsequent page within the initial page further comprises:

traversing the path through the hierarchy of nodes comprises traversing a path up the hierarchy of nodes; and

loading the subsequent page into local memory comprises directly identifying the page key of the subsequent page within the initial page.

9. The method of claim 5 , further comprising, after loading the subsequent page into local memory, caching both the initial page and the subsequent page in local memory.

10. The method of claim 1 , wherein loading the initial page from the database into local memory comprises loading the initial page and preloading at least one additional page that potentially stores nodes within the path into local memory.

11. The method of claim 1 , further comprising:

adding additional nodes to the initial page until a number of nodes within the initial page reaches a predetermined threshold; and

in response to the number of nodes reaching the predetermined threshold, separating the initial page into two pages that each contain a contiguous subsection of nodes.

12. A system for navigating through a hierarchy of nodes stored in a database, the system comprising at least one processor, wherein the processor is configured to:

divide a set of nodes organized in a hierarchy into contiguous subsections by:

selecting a number of nodes to allocate to each subsection based at least in part on an amount of time involved in loading the number of nodes into local memory from a database;

storing each subsection in a separate page within the database, wherein each node in the hierarchy represents at least one of: a child node descended from a parent node, a parent node with at least one child node, or a root node that represents a highest parent node within a path within a page, and each node within the hierarchy is uniquely identified by a primary key; and

storing within each node at least one association between the node and each related parent node, child node, or root node by storing within the node the primary key of each related node;

receive a request to access nodes within the database;

in response to the request, traverse a path through the hierarchy of nodes by:

identifying an initial node in the path and looking up an initial page that contains the initial node and one or more subsequent nodes in the path;

loading the initial page from the database into local memory such that each node contained in the initial page is accessible via local memory;

compressing contents of the initial page by serializing each node within the initial page into a single field within a page table;

navigating to the one or more subsequent nodes in the path by accessing the nodes loaded into local memory instead of accessing the database; and

store a page key of a subsequent page within at least one of a root node within the initial page or a lowest node on the path within the initial page.

13. The system of claim 12 , wherein the path comprises nodes distributed across multiple servers.

14. The system of claim 12 , wherein selecting the number of nodes to allocate to each subsection is based further on at least one of:

a total number of nodes within the hierarchy of nodes; and

a frequency with which nodes within the hierarchy of nodes are modified.

15. The system of claim 12 , wherein:

each page that stores a subsection of nodes is uniquely identified by a separate page key.

16. The system of claim 15 , wherein the processor is further configured to:

while traversing the path through the hierarchy of nodes, determine that the one or more subsequent nodes in the path is stored on the subsequent page; and

navigate to the one or more subsequent nodes by loading the subsequent page into local memory.

17. The system of claim 16 , wherein:

each parent node that has a child node on a separate page stores the page key of the page that stores the child node;

traversing the path through the hierarchy of nodes comprises traversing a path down the hierarchy of nodes; and

loading the subsequent page into local memory comprises identifying, within the lowest node on the path within the initial page, the page key of the subsequent page.

18. The system of claim 16 , wherein:

traversing the path through the hierarchy of nodes comprises traversing a path up the hierarchy of nodes; and

loading the subsequent page into local memory comprises:

identifying the primary key of the one or more subsequent nodes within the root node of the page that, for each page, stores the primary key of the parent node of the root node of the page; and

using the primary key of the one or more subsequent nodes to look up the page key of the subsequent page.

19. The method of claim 16 , wherein storing the page key of the subsequent page within the initial page further comprises:

traversing the path through the hierarchy of nodes comprises traversing a path up the hierarchy of nodes; and

loading the subsequent page into local memory comprises directly identifying the page key of the subsequent page within the initial page.

20. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

divide a set of nodes organized in a hierarchy into contiguous subsections by:

selecting a number of nodes to allocate to each subsection based at least in part on an amount of time involved in loading the number of nodes into local memory from a database;

storing each subsection in a separate page within the database, wherein each node in the hierarchy represents at least one of: a child node descended from a parent node, a parent node with at least one child node, or a root node that represents a highest parent node on a path within a page, and each node within the hierarchy is uniquely identified by a primary key; and

storing within each node at least one association between the node and each related parent node, child node, or root node by storing within the node the primary key of each related node;

receive a request to access nodes within the database;

in response to the request, traverse a path through the hierarchy of nodes by:

identifying an initial node in the path and looking up an initial page that contains the initial node and one or more subsequent nodes in the path;

loading the initial page from the database into local memory such that each node contained in the initial page is accessible via local memory;

compressing contents of the initial page by serializing each node within the initial page into a single field within a page table;

navigating to the one or more subsequent nodes in the path by accessing the nodes loaded into local memory instead of accessing the database; and

store a page key of a subsequent page within at least one of a root node within the initial page or a lowest node on the path within the initial page.

Assignments (16)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2014
From: HAYNES, TIM
To: SYMANTEC CORPORATION
Reel/Frame 033705/0672 →