IP Library Granted Patent US 11,544,251
Granted Patent B1
US 11,544,251 · App. 16/860,570 · Granted Jan 3, 2023

Database system with transactional commit protocol based on safe conjunction of majorities

Inventors: Mats Tobias Lindaaker (Malmö, SE); James Webber (Guildford, GB)
Assignee: Neo4j Sweden AB
G06F16/2379G06F16/27G06F16/9024
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,544,251
App. No.
16/860,570
Granted
Jan 3, 2023
Kind
B1
Abstract

A database system with a transactional commit protocol based on a safe conjunction of majorities is disclosed. In various embodiments, a directed acyclic graph comprising, for each of a plurality of database transactions, data identifying the transaction, data indicating one or more prior database transactions on which the database transaction depends, and data indicating whether the transaction has been committed is stored. A leading edge comprising a set of committed leaf nodes of the directed acyclic graph is determined. Data representing the leading edge is provided to a transaction coordinator configured to use the leading edge to determine based at least in part on the leading edge to commit a transaction.

Claims (38)

1. A system, comprising:

a memory or other storage device configured to store a directed acyclic graph comprising, for each of a plurality of transactions, data identifying the transaction, data indicating one or more prior transactions on which the transaction depends, and data indicating whether the transaction has been committed; and

a processor associated with a resource manager of a first database server included in a plurality of database servers each having a resource manager, the processor being coupled to the memory or other storage device and configured to:

determine a leading edge comprising a set of committed leaf nodes of the directed acyclic graph; and

provide data representing the leading edge to an external transaction coordinator;

wherein the transaction coordinator is configured to:

receive a respective leading edge from each respective resource manager of each of the plurality of database servers; and

allow a commit of a candidate transaction based at least in part on a determination that a majority of the resource managers have indicated they are prepared to commit the transaction and a majority have reported leading edges that are not identical but are compatible.

2. The system of claim 1 , wherein the plurality of database servers are associated with a database replicated across the plurality of database servers.

3. The system of claim 1 , wherein the plurality of database servers are associated with a database distributed across the plurality of database servers.

4. The system of claim 1 , wherein the processor is further configured to receive a message to commit the transaction and a leading edge data associated with the commit message; and to commit the transaction based at least in part on a determination that the received leading edge data matches a local leading edge of a local directed acyclic graph.

5. The system of claim 1 , wherein the processor is further configured to receive a message to commit the transaction and a leading edge data associated with the commit message; and to initiate a catch up procedure based at least in part on a determination that the received leading edge data does not match a local leading edge of a local directed acyclic graph.

6. The system of claim 5 , wherein the catch up procedure includes using data from a peer system having a directed acyclic graph with a leading edge that matches the leading edge data associated with the commit message.

7. The system of claim 6 , wherein the processor is further configured to send a committed message upon completing the catch up procedure successfully including by committing the transaction.

8. The system of claim 1 , wherein a root node of the acyclic graph represents an empty database and other nodes of the acyclic graph represents transactions in the database, wherein the transactions in the database include updates to the database.

9. A system comprising:

a memory or other storage device configured to store a directed acyclic graph comprising, for each of a plurality of transactions, data identifying the transaction, data indicating one or more prior transactions on which the transaction depends, and data indicating whether the transaction has been committed; and

a processor associated with a transaction coordinator, the processor being coupled to the memory or other storage device and configured to:

receive a respective leading edge from each respective resource manager of each of a plurality of database servers, the respective leading edge comprising a set of committed leaf nodes of the directed acyclic graph, wherein the plurality of database servers are associated with a database distributed across the plurality of database servers, the plurality of database servers being configured in a plurality of subgroups each storing an associated shard of the distributed database;

receive from each database server participating in the transaction a response indicating whether the database server is prepared to commit the transaction and data representing a local leading edge of a local directed acyclic graph of the database server;

determine with respect to each shard implicated by the transaction whether a majority of database servers have indicated they are prepared to commit the transaction and have reported a leading edge that is compatible with committing the transaction; and

commit the transaction based at least in part on a determination, based on the shard-specific determinations, that all shards implicated by the transaction have a majority of participating database servers prepared to commit the transaction.

10. A method, comprising:

storing a directed acyclic graph comprising, for each of a plurality of transactions, data identifying the transaction, data indicating one or more prior transactions on which the transaction depends, and data indicating whether the transaction has been committed;

determining, by a resource manager of a first database server included in a plurality of database servers each having a resource manager, a leading edge comprising a set of committed leaf nodes of the directed acyclic graph; and

providing, by the resource manager, data representing the leading edge to an external transaction coordinator;

wherein the transaction coordinator is configured to:

receive a respective leading edge from each respective resource manager of each of the plurality of database servers; and

allow a commit of a candidate transaction based at least in part on a determination that a majority of the resource managers have indicated they are prepared to commit the transaction and a majority have reported leading edges that are not identical but are compatible.

11. The method of claim 10 , wherein the plurality of database servers are associated with a database replicated across the plurality of database servers.

12. The method of claim 10 , wherein the plurality of database servers are associated with a database distributed across the plurality of database servers.

13. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

storing a directed acyclic graph comprising, for each of a plurality of transactions, data identifying the transaction, data indicating one or more prior transactions on which the transaction depends, and data indicating whether the transaction has been committed;

determining, by a resource manager of a first database server included in a plurality of database servers each having a resource manager, a leading edge comprising a set of committed leaf nodes of the directed acyclic graph; and

providing, by the resource manager, data representing the leading edge to an external transaction coordinator;

wherein the transaction coordinator is configured to:

receive a respective leading edge from each respective resource manager of each of the plurality of database servers; and

allow a commit of a candidate transaction based at least in part on a determination that a majority of the resource managers have indicated they are prepared to commit the transaction and a majority have reported leading edges that are not identical but are compatible.

Assignments (2)
SECURITY INTEREST Recorded Mar 31, 2026
From: NEO4J, INC.; NEO4J SWEDEN AB
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 074237/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2020
From: LINDAAKER, MATS TOBIAS; WEBBER, JAMES
To: NEO4J SWEDEN AB
Reel/Frame 052762/0443 →