IP Library Granted Patent US 12,393,551
Granted Patent B2
US 12,393,551 · App. 18/600,583 · Granted Aug 19, 2025

Selecting subscribing computing node to execute data storage plan for data shard

Inventors: Ning Deng (Cambridge, MA); Yuanzhe Bei (Cambridge, MA); Alexander Kalinin (Cambridge, MA)
Assignee: Micro Focus LLC
G06F16/172G06F16/1734G06F16/182
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 12,393,551
App. No.
18/600,583
Granted
Aug 19, 2025
Kind
B2
Abstract

A distributed database system maintains a database including a data shard for which a primary computing node is responsible. The primary computing node identifies a data storage plan for the data shard. The plan identifies a file subset of data storage files of the shard to be merged into a larger data storage file, and a node subset of computing nodes of the system that subscribe to the data shard. The primary node identifies which computing nodes of the node subset each have sufficient computing resources to execute the plan, as candidate computing nodes. The primary node identifies which files of the file subset each candidate computing node locally caches. The primary node selects one candidate computing node to execute the plan, based on the files of the file subset that each candidate computing node locally caches. The primary node causes the selected candidate computing node to execute the plan.

Claims (65)

1. A non-transitory computer-readable data storage medium storing program code executable by a primary computing node of a distributed database system to perform processing, the distributed database system maintaining a database that includes a data shard for which the primary computing node is responsible, the processing comprising:

receiving or generating a data storage plan for the data shard, the data storage plan identifying a file subset of a plurality of data storage files of the data shard to be merged into a larger data storage file, the data storage plan further identifying a node subset of a plurality of computing nodes of the distributed database system subscribing to the data shard, the subset including the primary computing node;

identifying which computing nodes of the node subset each have a current utilization satisfying an availability criterion, as candidate computing nodes, comprising:

identifying a configuration of each computing node of the node subset within a resource pool, the configuration specifying the current utilization of the computing node; and

selecting each computing node of which the current utilization satisfies the availability criterion, as one of the candidate computing nodes;

identifying which data storage files of the file subset each candidate computing node locally caches, comprising:

sending a message to the candidate computing node to receive information regarding the data storage files of the file subset that the candidate computing node locally caches; and

receiving a reply from the candidate computing node including the information regarding the data storage files of the file subset that the candidate computing node locally caches;

selecting one of the candidate computing nodes to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally caches; and

causing the selected one of the candidate computing nodes to execute the data storage plan by merging the data storage files of the file subset into the larger data storage file and uploading the larger data storage file to a global shared storage accessible by the computing nodes of the distributed database system,

wherein execution of the data storage plan resolves fragmentation of data stored in the data shard resulting from queries being performed against the data.

2. The non-transitory computer-readable data storage medium of claim 1 , wherein the information comprises one or more of:

a number of the data storage files of the file subset that the candidate computing node locally caches; and

a size of the data storage files of the file subset that the candidate computing node locally caches.

3. The non-transitory computer-readable data storage medium of claim 1 , wherein selecting the one of the candidate computing nodes to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally caches, comprises:

selecting the one of the candidate computing nodes to execute the data storage plan as the candidate computing node locally caching a greatest number of the data storage files of the file subset.

4. The non-transitory computer-readable data storage medium of claim 1 , wherein selecting the one of the candidate computing nodes to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally caches, comprises:

selecting the one of the candidate computing nodes to execute the data storage plan as the candidate computing node locally caching a largest size of the data storage files of the file subset.

5. The non-transitory computer-readable data storage medium of claim 1 , wherein selecting the one of the candidate computing nodes to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally caches, comprises:

for each candidate computing node, computing a score based on a number of the data storage files that the candidate computing node locally caches and based on a size of the data storage files that the candidate computing node locally caches;

selecting the one of the candidate computing nodes to execute the data storage plan as the candidate computing node having a highest score.

6. The non-transitory computer-readable data storage medium of claim 1 , wherein the selected one of the candidate computing nodes to execute the data storage plan is other than the primary computing node, and wherein causing the selected one of the candidate computing nodes to execute the data storage plan comprises:

sending the data storage plan to the selected one of the candidate computing nodes for execution.

7. The non-transitory computer-readable data storage medium of claim 6 , wherein the processing further comprises:

receiving data storage plan execution results from the selected one of the candidate computing nodes after execution of the data storage plan; and

performing further operations regarding the data shard, based on the data storage plan execution results.

8. The non-transitory computer-readable data storage medium of claim 1 , wherein the selected one of the candidate computing nodes to execute the data storage plan is the primary computing node, and wherein causing the selected one of the candidate computing nodes to execute the data storage plan comprises:

executing the data storage plan.

9. A method comprising:

receiving, by a computing node of a distributed database system maintaining a database including a data shard to which a node subset of a plurality of computing nodes of the distributed database system including the computing node and a primary computing node responsible for the data shard, a data storage plan identifying the node subset and a file subset of a plurality of data storage files of the data shard to be merged into a larger data storage file, the data storage plan received from the primary computing node;

executing, by the computing node, the data storage plan by merging the data storage files of the file subset into the larger data storage file and uploading the larger data storage file to a global shared storage accessible by the computing nodes of the distributed database system,

wherein execution of the data storage plan resolves fragmentation of data stored in the data shard resulting from queries being performed against the data,

and wherein the primary computing node:

identifies which computing nodes of the node subset each have a current utilization satisfying an availability criterion, as candidate computing nodes, the candidate computing nodes including the computing node, by:

identifying a configuration of each computing node of the node subset within a resource pool, the configuration specifying the current utilization of the computing node; and

selecting each computing node of which the current utilization satisfies the availability criterion, as one of the candidate computing nodes;

identifies which data storage files of the file subset each candidate computing node locally caches, comprising:

sending a message to the candidate computing node to receive information regarding the data storage files of the file subset that the candidate computing node locally caches; and

receiving a reply from the candidate computing node including the information regarding the data storage files of the file subset that the candidate computing node locally caches; and

selects the computing node to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally cache.

10. The method of claim 9 , further comprising:

receiving, by the computing node from the primary computing node, a message to send information regarding the data storage files of the file subset that the computing node locally caches; and

sending, by the computing node to the primary computing node, a reply including the information regarding the data storage files of the file subset that the computing node locally caches.

11. The method of claim 10 , wherein the information comprises:

a number of the data storage files of the file subset that the computing node locally caches.

12. The method of claim 10 , wherein the information comprises a size of the data storage files of the file subset that the candidate computing node locally caches.

13. A distributed database system comprising:

a plurality of computing nodes; and

a global storage storing a plurality of data shards of a database, each data shard including a plurality of data storage files and for which one of the computing nodes is a primary computing node responsible for the data shard,

wherein the primary computing node for each data shard is to:

receive or generate a data storage plan for the data shard, the data storage plan identifying a file subset of the data storage files of the data shard to be merged into a larger data storage file, the data storage plan further identifying a node subset of the computing nodes subscribing to the data shard, the subset including the primary computing node;

identify which computing nodes of the node subset each have a current utilization satisfying an availability criterion, as candidate computing nodes, by:

identifying a configuration of each computing node of the node subset within a resource pool, the configuration specifying the current utilization of the computing node; and

selecting each computing node of which the current utilization satisfies the availability criterion, as one of the candidate computing nodes;

identify which data storage files of the file subset each candidate computing node locally caches, by:

sending a message to the candidate computing node to receive information regarding the data storage files of the file subset that the candidate computing node locally caches; and

receiving a reply from the candidate computing node including the information regarding the data storage files of the file subset that the candidate computing node locally caches;

select one of the candidate computing nodes to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally caches; and

cause the selected one of the candidate computing nodes to execute the data storage plan by merging the data storage files of the file subset into the larger data storage file and uploading the larger data storage file to a global shared storage accessible by the computing nodes of the distributed database system,

wherein execution of the data storage plan resolves fragmentation of data stored in the data shard resulting from queries being performed against the data.

14. The distributed database system of claim 13 , wherein the information comprises a number of the data storage files of the file subset that the candidate computing node locally caches.

15. The distributed database system of claim 13 , wherein the information comprises a size of the data storage files of the file subset that the candidate computing node locally caches.

16. The distributed database system of claim 13 , wherein the primary node for each data shard is to select the one of the candidate computing nodes to execute the data storage plan, based on the data storage files of the file subset that each candidate computing node locally caches, by:

for each candidate computing node, computing a score based on a number of the data storage files that the candidate computing node locally caches and/or based on a size of the data storage files that the candidate computing node locally caches; and

selecting the one of the candidate computing nodes to execute the data storage plan as the candidate computing node having a highest score.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2026
From: MICRO FOCUS LLC
To: ROCKET SOFTWARE, INC.
Reel/Frame 075795/0114 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2024
From: DENG, NING; BEI, YUANZHE; KALININ, ALEXANDER
To: MICRO FOCUS LLC
Reel/Frame 068806/0091 →
Continuity (2)
Continuation 17578644 · Jan 19, 2022
Related Publication 20240211440A1 · Jun 27, 2024
References Cited (8)
US 8700674B2 · Bear et al. · 2014 [cited by applicant]
US 9830111B1 · Patiejunas · 2017 [cited by examiner]
US 20150261468A1 · Khoyi · 2015 [cited by examiner]
US 20170295246A1 · Georgiou · 2017 [cited by examiner]
US 20220291858A1 · DeWitt · 2022 [cited by examiner]
US 20230125030A1 · Darji · 2023 [cited by examiner]
“Vertica Knowledge Base Article: Tuple Move Best Practices,” Micro Focus International plc, Nov. 15, 2018, 12 pages [retrieved online from: www.vertica.com/kb/Tuple-Mover-Best-Practices/Content/BestPractices/Tuple-Mover… [cited by applicant]
Vandiver et al. “Eon Mode: Bringing the Vertica Columnar Database to the Cloud,” Proceedings of the 2018 International Conference on Management of Data, Jun. 2018, 13 pages. [cited by applicant]