IP Library Granted Patent US 11,176,111
Granted Patent B2
US 11,176,111 · App. 16/129,661 · Granted Nov 16, 2021

Distributed database management system with dynamically split B-tree indexes

Inventors: Trek S. Palmer (Cambridge, MA); James A. Starkey (Manchester, MA)
Assignee: NuoDB, Inc.
G06F16/2246G06F16/2379
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,176,111
App. No.
16/129,661
Granted
Nov 16, 2021
Kind
B2
Abstract

A distributed data processing system for a database composed of data records organized into tables for responding to a request to split an index in a consistent and concurrent fashion. A request to split an index atom at any given node is processed by a designated “chairman” for that index atom. The chairman splits its index by maintaining a lower portion thereof and by moving the contents of an upper portion to a newly created index atom as the right sibling. Each other node takes appropriate steps to assure orderly transfer of this information from the chairman consistently and concurrently across the distributed database processing system.

Claims (61)

1. A method of splitting a first index atom in a plurality of atoms in a distributed database, the distributed database comprising a plurality of nodes, each node in the plurality of nodes comprising a corresponding processor and a corresponding memory, one node in the plurality of nodes being designated as a chairman for the first index atom and including a chairman's instance of the index atom, the method comprising:

splitting, by the chairman, a portion of the chairman's instance of the first index atom into a chairman's instance of a second index atom;

broadcasting, by the chairman, an index split message to each node in the plurality of nodes including a corresponding instance of the first index atom;

receiving, at the chairman, a message to insert a key value into the second index atom;

rebroadcasting the message from the corresponding instance of the first index atom to a corresponding instance of the second index atom at each node in the plurality of nodes including the corresponding instance of the first index atom, the message causing each node in the plurality of nodes having a corresponding instance of the second index atom to insert the key value into the corresponding instance of the second index atom;

receiving, at the chairman, a split done message from each node in the plurality of nodes including a corresponding instance of the first index atom, the split done message indicating that a portion of the corresponding instance of the first index atom has been split into the corresponding instance of the second index atom;

in response to receiving the split done message from each node in the plurality of nodes including a corresponding instance of the first index atom, terminating, at the chairman, rebroadcasting the message; and

broadcasting, by the chairman, an index split done message to each node in the plurality of nodes including a corresponding instance of the first index atom.

2. The method of claim 1 , wherein splitting the portion of the chairman's instance of the first index atom further comprises:

selecting a split key value for the first index atom, the split key value defining a first set of key values in the first index atom and a second set of key values in the first index atom;

creating the chairman's instance of the second index atom; and

moving the second set of key values from the chairman's instance of the first index atom to the chairman's instance of the second index atom.

3. The method of claim 2 , wherein splitting the chairman's instance of the first index atom further comprises:

truncating the chairman's instance of the first index atom based on the split key value.

4. The method of claim 3 , further comprising, at each node in the plurality of nodes including a corresponding instance of the first index atom:

deleting the second set of key values from the corresponding instance of the first index atom;

retrieving from the chairman the corresponding instance of the second index atom; and

sending the corresponding split done message to the chairman.

5. The method of claim 1 , wherein the index split message includes instructions from the chairman to each node in the plurality of nodes including the corresponding instance of the first index atom to split their corresponding instances of the first index atoms.

6. The method of claim 1 , wherein the index split done message represents an acknowledgement indicating that the corresponding instance of the first index atom in each node in the plurality of nodes including the corresponding instance of the first index atom has been split.

7. The method of claim 1 , wherein the chairman receives the message to insert the key value before receiving the corresponding split done message from each node in the plurality of nodes including a corresponding instance of the first index atom.

8. The method of claim 7 , further comprising:

inserting the key value into the second index atom before the corresponding split done message is received from each node in the plurality of nodes including a corresponding instance of the first index atom.

9. The method of claim 8 , further comprising determining if the message is a duplicate.

10. The method of claim 9 , further comprising, in response to determining that the message is duplicate, dropping or ignoring the message.

11. The method of claim 7 , wherein the chairman receives the message to insert the key value into the second index atom after splitting the portion of the chairman's instance of the first index atom.

12. A method of splitting an index atom in a plurality of atoms in a distributed database, the distributed database comprising a plurality of nodes, each node in the plurality of nodes comprising a corresponding processor and a corresponding memory, one node in the plurality of nodes being designated as a chairman for the index atom and including a chairman's instance of the index atom, the chairman's instance of the index atom representing data and/or metadata stored in the distributed database, the method comprising:

selecting a split key value for the index atom, the split key value defining a first set of key values in the source atom and a second set of key values in the target atom;

creating, by the chairman, a chairman's instance of a target atom;

moving the second set of key values from the chairman's instance of the index atom to the chairman's instance of the target atom;

transmitting, by the chairman to at least a subset of nodes in the plurality of nodes, instructions to split the index atom, each node in the at least a subset of nodes including a corresponding instance of the index atom;

splitting, by a first node in the at least a subset of nodes, a first instance of the index atom into a first instance of a source atom and a first instance of a target atom;

transmitting, from the first node to the chairman, an acknowledgement indicating that the first instance of the index atom has been split;

receiving, at the chairman, a message to process a record associated with a key value in the second set of key values before receiving the acknowledgement at the chairman;

rebroadcasting the message from the chairman's instance of the source atom to the chairman's instance of the target atom and/or from the first instance of the source atom to the first instance of the target atom;

terminating the rebroadcasting after the chairman receives the acknowledgement; and

transmitting, from the chairman to the at least a subset of nodes, a message indicating the index atom has been split.

13. The method of claim 12 , wherein splitting the chairman's instance of the index atom further comprises:

truncating the chairman's instance of the source atom at the split key value.

14. The method of claim 13 , wherein splitting by the first node the first instance of the index atom further comprises:

deleting the second set of key values from the first instance of the source atom; and

retrieving, from the chairman, the first instance of the target atom.

15. The method of claim 12 , wherein the acknowledgement comprises an index split done message indicating that a corresponding instance of the index atom has been split.

16. A method of splitting a first index atom in a plurality of atoms in a distributed database, the distributed database being distributed over a plurality of nodes, each node in the plurality of nodes comprising a corresponding processor and a corresponding memory, each atom in a plurality of atoms containing a specific fragment of the data and/or metadata, the plurality of atoms collectively representing all the data and/or metadata in the distributed database, one node in the plurality of nodes including a first copy of the first index atom and being designated as a chairman for the first index atom, the method comprising:

at the chairman:

splitting the first copy of the first index atom into a first copy of a pair of siblings;

transmitting, to other nodes in the plurality of nodes, instructions to split respective local copies of the first index atom, the respective local copies of the first index atom being replicas of the first copy of the first index atom on the other nodes;

rebroadcasting a message involving the first index atom received at one sibling in the pair of siblings from the other sibling in the pair of siblings;

receiving, from the other nodes in the plurality of nodes, respective acknowledgements that the respective local copies of the first index atom have been split;

in response to receiving the respective acknowledgements, terminating the rebroadcasting of the message involving the first index atom; and

broadcasting a split done message to the other nodes in the plurality of nodes, the split done message indicating that the respective local copies of the first index atom have been split;

at each of the other nodes in the plurality of nodes:

splitting, by the other nodes in the plurality of nodes, the respective local copies of the first index atom into respective copies of the pair of siblings in response to the instructions to split the respective local copies of the first index atom; and

transmitting, from the other nodes in the plurality of nodes to the chairman, the respective acknowledgements that the respective local copies of the first index atom have been split; and

at a first node in the plurality of nodes:

receiving the message involving the first index atom before receiving the split done message from the chairman;

determining whether a copy of the message exists in a bit map;

upon determining that the copy of the message exists, dropping or ignoring the message;

upon determining that the copy of the message does not exist, entering the message to the bit map; and

processing the message before receiving the split done message from the chairman.

17. The method of claim 16 , wherein receiving the message involving the first index atom at the first node in the plurality of nodes occurs after the first index atom receives the instructions to split respective local copies of the first index atom from the chairman and before the first index atom receives the split done message from the chairman.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2024
From: NUODB, INC.
To: DASSAULT SYSTEMES SE
Reel/Frame 068299/0883 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2018
From: PALMER, TREK S.; STARKEY, JAMES A.
To: NUODB, INC.
Reel/Frame 047367/0113 →
Continuity (3)
Continuation 14215401 · Mar 17, 2014
Provisional Application 61789479 · Mar 15, 2013
Related Publication 20190278757A1 · Sep 12, 2019
Cited By (1)
US 12,321,327