IP Library › Granted Patent US 12,288,040
Granted Patent B2
US 12,288,040 · App. 18/765,755 · Granted Apr 29, 2025

System and method for optimal routing in a large database management system

Inventors: Jason Arnold (Chicago, IL); George Kondiles (Highland Park, IL)
Assignee: Ocient Inc.
G06F7/08G06F7/24G06F9/5027G06F16/24535G06F16/2456G06N7/01G06N20/10H04L45/122H04L45/127H04L45/24H04L47/125
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,288,040
App. No.
18/765,755
Granted
Apr 29, 2025
Kind
B2
Abstract

A method for execution, by a first intermediate node of a plurality of nodes in a database management system, includes processing a message that includes data that is being sent in accordance with a routing path from a source node to a destination node, is a first size, and indicates a next node of the routing path, wherein the first intermediate node is limited to communication with a subset of nodes of the plurality of nodes, and wherein the subset of nodes includes the next node. The method further includes maintaining a tracking table that indicates a total amount of data sent to each node of the subset of nodes during a first time period. The method further includes resetting the total amount of data sent to each of the subset of nodes to zero based one or more of a command and an initiation of a second time period.

Claims (64)

1. A method for load balancing in a database management system comprises:

processing a message by a first intermediate node of a plurality of nodes, wherein the message includes data that is being sent in accordance with a routing path from a source node of the plurality of nodes to a destination node of the plurality of nodes, wherein the data is a first size and the data indicates a next node of the routing path, wherein the first intermediate node is limited to communication with a subset of nodes of the plurality of nodes, and wherein the subset of nodes includes the next node;

maintaining a tracking table that indicates a total amount of data sent by the first intermediate node to each node of the subset of nodes during a first time period; and

resetting the total amount of data sent by the first intermediate node to each of the subset of nodes to zero, based one or more of a command and an initiation of a second time period.

2. The method of claim 1 further comprises:

sending, by the first intermediate node, the message to the next node.

3. The method of claim 1 further comprises:

when the resetting is based on the initiation of the second time period:

maintaining, by the first intermediate node, the tracking table by indicating the total amount of data sent to each of the subset of nodes during the second time period.

4. The method of claim 1 , wherein the processing further comprises:

generating a revised message, wherein the revised message includes the data and has a second size;

determining, based on the message, whether there is at least one additional intermediate node after the next node in the routing path; and

when there is at least one additional intermediate node:

determining an optimal route for forwarding the revised message to the additional intermediate node via a node of the subset of nodes; and

sending the revised message to the node in accordance with the optimal route.

5. The method of claim 4 , wherein the determining the optimal route comprises:

determining the total amount of data for each node the subset of nodes; and

selecting the node from the subset of nodes when the total amount of data for the node is less than the total amount of data for other nodes of the subset of nodes.

6. The method of claim 4 , wherein the message further comprises:

an indication of a number of intermediate nodes between the next node and the destination node,

wherein the intermediate nodes include the next node; and

an identifier of each of the intermediate nodes.

7. The method of claim 6 , wherein the determining whether there is at least one additional intermediate node after the next node in the routing path comprises one of:

determining whether the number is greater than or equal to two; and

determining whether there is two or more identifiers of the intermediate nodes in the message.

8. The method of claim 6 , wherein the generating the revised message comprises:

lowering the indication of the number by one; and

removing an identifier associated with the next node, wherein the second size is equal to the first size minus a size of the identifier.

9. The method of claim 6 , wherein the maintaining further comprises:

updating, by the first intermediate node, an entry of the tracking table associated with the node to produce an updated total amount of data sent to the node, wherein the updated total amount includes the second size added to the total amount.

10. The method of claim 1 , wherein the limit to the communication with the subset of nodes is based on a connecting node formula, and wherein the connecting node formula is based on the plurality of nodes being arranged as a variable density binomial graph network within the database management system.

11. A node of a plurality of nodes of a database management system, the node comprising:

memory;

an interface; and

at least one processing unit operably coupled to the memory and the interface, wherein the at least one processing unit is operable to:

process a message, wherein the message includes data that is being sent in accordance with a routing path from a source node of the plurality of nodes to a destination node of the plurality of nodes, wherein the data is a first size and the data indicates a next node of the routing path, wherein a first intermediate node of the plurality of nodes is limited to communication with a subset of nodes of the plurality of nodes, and wherein the subset of nodes includes the next node;

maintain a tracking table that indicates a total amount of data sent from the first intermediate node to each node of the subset of nodes during a first time period; and

reset the total amount of data sent to each of the subset of nodes to zero, based one or more of a command and an initiation of a second time period.

12. The node of claim 11 , wherein the at least one processing unit is further operable to:

send, via the interface, the message to the next node.

13. The node of claim 11 , wherein when the resetting is based on the initiation of the second time period, the at least one processing unit is further operable to:

maintain the tracking table by indicating the total amount of data sent to each of the subset of nodes during the second time period.

14. The node of claim 11 , wherein the at least one processing unit is further operable to perform the processing by:

generating a revised message, wherein the revised message includes the data and has a second size;

determining, based on the message, whether there is at least one additional intermediate node after the next node in the routing path; and

when there is at least one additional intermediate node:

determining an optimal route for forwarding the revised message to the additional intermediate node via a node of the subset of nodes; and

sending, via the interface, the revised message to the node in accordance with the optimal route.

15. The node of claim 14 , wherein the at least one processing unit is further operable to perform the determining the optimal route by:

determining the total amount of data for each node the subset of nodes; and

selecting the node from the subset of nodes when the total amount of data for the node is less than the total amount of data for other nodes of the subset of nodes.

16. The node of claim 14 , wherein the at least one processing unit is further operable to determine the message includes:

an indication of a number of intermediate nodes between the next node and the destination node,

wherein the intermediate nodes include the next node; and

an identifier of each of the intermediate nodes.

17. The node of claim 16 , wherein the at least one processing unit is further operable to determine whether there is at least one additional intermediate node after the next node in the routing path by one of:

determining whether the number is greater than or equal to two; and

determining whether there is two or more identifiers of the intermediate nodes in the message.

18. The node of claim 16 , wherein the at least one processing unit is further operable to generate the revised message by:

lowering the indication of the number by one; and

removing an identifier associated with the next node, wherein the second size is equal to the first size minus a size of the identifier.

19. The node of claim 16 , wherein the at least one processing unit is further operable to perform the maintaining by:

updating an entry of the tracking table associated with the node to produce an updated total amount of data sent to the node, wherein the updated total amount includes the second size added to the total amount.

20. The node of claim 11 , wherein the at least one processing unit is further operable to determine the limit to the communication with the subset of nodes is based on a connecting node formula, and wherein the connecting node formula is based on the plurality of nodes being arranged as a variable density binomial graph network within the database management system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2024
From: ARNOLD, JASON; KONDILES, GEORGE
To: OCIENT INC.
Reel/Frame 067929/0684 →
Continuity (5)
Continuation 17514636 · Oct 29, 2021
Continuation 16123962 · Sep 6, 2018
Provisional Application 62555198 · Sep 7, 2017
Provisional Application 62555205 · Sep 7, 2017
Related Publication 20240378016A1 · Nov 14, 2024
References Cited (50)
US 5548770A · Bridges · 1996 [cited by applicant]
US 6230200B1 · Forecast · 2001 [cited by applicant]
US 6633772B2 · Ford · 2003 [cited by applicant]
US 7499907B2 · Brown · 2009 [cited by applicant]
US 7908242B1 · Achanta · 2011 [cited by applicant]
US 9197495B1 · Rauser · 2015 [cited by examiner]
US 10574577B1 · Matthews · 2020 [cited by examiner]
US 20010051949A1 · Carey · 2001 [cited by applicant]
US 20020032676A1 · Reiner · 2002 [cited by applicant]
US 20040162853A1 · Brodersen · 2004 [cited by applicant]
US 20080133456A1 · Richards · 2008 [cited by applicant]
US 20090063893A1 · Bagepalli · 2009 [cited by applicant]
US 20090183167A1 · Kupferschmidt · 2009 [cited by applicant]
US 20100082577A1 · Mirchandani · 2010 [cited by applicant]
US 20100241646A1 · Friedman · 2010 [cited by applicant]
US 20100274983A1 · Murphy · 2010 [cited by applicant]
US 20100312756A1 · Zhang · 2010 [cited by applicant]
US 20110219169A1 · Zhang · 2011 [cited by applicant]
US 20120109888A1 · Zhang · 2012 [cited by applicant]
US 20120151118A1 · Flynn · 2012 [cited by applicant]
US 20120185866A1 · Couvee · 2012 [cited by applicant]
US 20120254252A1 · Jin · 2012 [cited by applicant]
US 20120311246A1 · McWilliams · 2012 [cited by applicant]
US 20130332484A1 · Gajic · 2013 [cited by applicant]
US 20140047095A1 · Breternitz · 2014 [cited by applicant]
US 20140009273A1 · Grandhi · 2014 [cited by applicant]
US 20140092738A1 · Grandhi · 2014 [cited by examiner]
US 20140136510A1 · Parkkinen · 2014 [cited by applicant]
US 20140188841A1 · Sun · 2014 [cited by applicant]
US 20150205607A1 · Lindholm · 2015 [cited by applicant]
US 20150244804A1 · Warfield · 2015 [cited by applicant]
US 20150248366A1 · Bergsten · 2015 [cited by applicant]
US 20150293966A1 · Cai · 2015 [cited by applicant]
US 20150310045A1 · Konik · 2015 [cited by applicant]
US 20160034547A1 · Lerios · 2016 [cited by applicant]
US 20180077051A1 · Nainar · 2018 [cited by examiner]
A new high performance fabric for HPC, Michael Feldman, May 2016, Intersect360 Research. [cited by applicant]
Alechina, N. (2006-2007). B-Trees. School of Computer Science, University of Nottingham, http://www.cs.nott.ac.uk/˜psznza/G5BADS06/lecture13-print.pdf. 41 pages. [cited by applicant]
Amazon DynamoDB: ten things you really should know, Nov. 13, 2015, Chandan Patra, http://cloudacademy. .com/blog/amazon-dynamodb-ten-thing. [cited by applicant]
An Inside Look at Google BigQuery, by Kazunori Sato, Solutions Architect, Cloud Solutions team, Google Inc., 2012. [cited by applicant]
Big Table, a NoSQL massively parallel table, Paul Krzyzanowski, Nov. 2011, https://www.cs.rutgers.edu/pxk/417/notes/contentlbigtable.html. [cited by applicant]
Distributed Systems, Fall2012, Mohsen Taheriyan, http://www-scf.usc.edu/-csci57212011Spring/presentations/Taheriyan.pptx. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/054773; Feb. 13, 2018; 17 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/054784; Dec. 28, 2017; 10 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/066169; Mar. 6, 2018; 15 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2018/025729; Jun. 27, 2018; 9 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2018/034859; Oct. 30, 2018; 8 pgs. [cited by applicant]
MapReduce: Simplified Data Processing on Large Clusters, OSDI 2004, Jeffrey Dean and Sanjay Ghemawat, Google, Inc., 13 pgs. [cited by applicant]
Rodero-Merino, L.; Storage of Structured Data: Big Table and HBase, New Trends in Distributed Systems, MSc Software and Systems, Distributed Systems Laboratory; Oct. 17, 2012; 24 pages. [cited by applicant]
Step 2: Examine the data model and implementation details, 2016, Amazon Web Services, Inc., http://docs.aws.amazon.com/amazondynamodb/latestldeveloperguide!Ti . . . . [cited by applicant]