IP Library Granted Patent US 12,596,748
Granted Patent B2
US 12,596,748 · App. 18/945,268 · Granted Apr 7, 2026

Graph database storage engine

Inventors: Matthew Parnell (London, GB); Valdemar Roxling (Malmö, SE); Peter Wilhelmsson (Lund, SE); Rory Steele (Hemel Hempstead, GB); Mattias Finné (Helsingborg, SE)
Assignee: Neo4j Sweden AB
G06F16/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 12,596,748
App. No.
18/945,268
Granted
Apr 7, 2026
Kind
B2
Abstract

A graph database storage engine is disclosed. In various embodiments, data associated with a node comprising a graph is received via a communication interface. The graph includes a plurality of nodes and a plurality of relationships, and wherein each node in the plurality of nodes has associated therewith a corresponding set of node data and a corresponding set of relationship data. The received data associated with the node is stored in a data storage device in a data record associated with the node, wherein the data record is stored in a static block of a fixed size stored on a single page of data on the data storage device and the data record includes at least a subset of the corresponding set of node data and the corresponding set of relationship data of the node.

Claims (31)

1 . A graph database system, comprising:

a communication interface; and

a processor coupled to the communication interface and configured to:

receive, via the communication interface, data associated with a node comprising a graph, wherein the graph includes a plurality of nodes and a plurality of relationships, and wherein each node in the plurality of nodes has associated therewith a corresponding set of node data and a corresponding set of relationship data; and

store the received data associated with the node in a data storage device in a data record associated with the node, wherein the data record is stored in a static block of a fixed size stored on a single page of data on the data storage device and the data record includes at least a subset of the corresponding set of node data and the corresponding set of relationship data of the node;

wherein the single page of data on the data storage device comprises a plurality of static blocks of the fixed size each of which is associated with a corresponding one of the plurality of nodes, a first subset of the static blocks comprising a pair of fixed sized records including a node record comprising node data of the node and a relationship record comprising relationship data of the node and a second subset of the static blocks comprising additional node data of associated with a node with which a corresponding static block in the first subset is associated and to which the corresponding static block in the first subset includes a pointer.

2 . The system of claim 1 , wherein the corresponding set of node data of a node includes a node label.

3 . The system of claim 1 , wherein the corresponding set of node data of a node includes one or more properties of the node.

4 . The system of claim 1 , wherein the processor is configured to store in the data storage device, for each node included in the graph, one or more data records associated uniquely with that node, the data records being stored in a corresponding static block of the fixed size stored on a corresponding single page of data on the data storage device, each such data record including at least a subset of a set of node data and a set of relationship data of corresponding to that node.

5 . The system of claim 1 , wherein the data record comprises a first data record and the processor is configured to store in the same static block as the first data record a second data record.

6 . The system of claim 5 , wherein the first data record and the second data record are of the same size.

7 . The system of claim 5 , wherein the first data record stores node data, including one or more of a node label and a node property.

8 . The system of claim 7 , wherein the second data record stores node relationship data.

9 . The system of claim 1 , wherein the corresponding set of node data includes data that exceeds the size of the data record and the data record includes a pointer to a dynamic data store configured to store at least a portion of the corresponding set of node data that is not stored in the data record.

10 . The system of claim 9 , wherein the dynamic data store is stored in the data storage device on a different page than the page on which the data record is stored.

11 . The system of claim 9 , wherein the dynamic data store includes a set of one or more dynamic data records of a same fixed size.

12 . The system of claim 11 , wherein the processor is configured to grow or shrink the dynamic data store in units of the same fixed size as needed to store node data that does not fit in the data record.

13 . The system of claim 1 , wherein one or both of the corresponding set of node data and the corresponding set of relationship data of the node comprises property data and the processor is configured to store the property data as a set of key value pairs.

14 . The system of claim 13 , wherein the keys and corresponding value sizes are stored separately from the values.

15 . The system of claim 13 , wherein the keys and values are sorted by value size to facilitate fast traversal.

16 . The system of claim 1 , wherein the relationship data is stored by type for fast filtering.

17 . The system of claim 16 , wherein within each type the relationship data is stored with outgoing only relationships first, then bidirectional or loop relationships second, then incoming relationships third to facilitate fast filtering.

18 . The system of claim 1 , further comprising a memory and wherein the processor is further configured to retrieve from the data storage and store in the memory said single page of data that includes the data record associated with the node.

19 . A method of storing graph data, comprising:

receiving, via a communication interface, data associated with a node comprising a graph, wherein the graph includes a plurality of nodes and a plurality of relationships, and wherein each node in the plurality of nodes has associated therewith a corresponding set of node data and a corresponding set of relationship data; and

storing the received data associated with the node in a data storage device in a data record associated with the node, wherein the data record is stored in a static block of a fixed size stored on a single page of data on the data storage device and the data record includes at least a subset of the corresponding set of node data and the corresponding set of relationship data of the node;

wherein the single page of data on the data storage device comprises a plurality of static blocks of the fixed size each of which is associated with a corresponding one of the plurality of nodes, a first subset of the static blocks comprising a pair of fixed sized records including a node record comprising node data of the node and a relationship record comprising relationship data of the node and a second subset of the static blocks comprising additional node data of associated with a node with which a corresponding static block in the first subset is associated and to which the corresponding static block in the first subset includes a pointer.

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

receiving, via a communication interface, data associated with a node comprising a graph, wherein the graph includes a plurality of nodes and a plurality of relationships, and wherein each node in the plurality of nodes has associated therewith a corresponding set of node data and a corresponding set of relationship data; and

storing the received data associated with the node in a data storage device in a data record associated with the node, wherein the data record is stored in a static block of a fixed size stored on a single page of data on the data storage device and the data record includes at least a subset of the corresponding set of node data and the corresponding set of relationship data of the node;

wherein the single page of data on the data storage device comprises a plurality of static blocks of the fixed size each of which is associated with a corresponding one of the plurality of nodes, a first subset of the static blocks comprising a pair of fixed sized records including a node record comprising node data of the node and a relationship record comprising relationship data of the node and a second subset of the static blocks comprising additional node data of associated with a node with which a corresponding static block in the first subset is associated and to which the corresponding static block in the first subset includes a pointer.

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 Jan 28, 2025
From: PARNELL, MATTHEW; ROXLING, VALDEMAR; WILHELMSSON, PETER; STEELE, RORY; FINNÉ, MATTIAS
To: NEO4J SWEDEN AB
Reel/Frame 070029/0332 →
Continuity (2)
Provisional Application 63599517 · Nov 15, 2023
Related Publication 20250156478A1 · May 15, 2025
References Cited (16)
US 7512612B1 · Akella · 2009 [cited by examiner]
US 12072918B1 · Newman · 2024 [cited by examiner]
US 12292930B1 · Miller · 2025 [cited by examiner]
US 20130232174A1 · Krajec · 2013 [cited by examiner]
US 20140019490A1 · Roy · 2014 [cited by examiner]
US 20140280224A1 · Feinberg · 2014 [cited by examiner]
US 20160004787A1 · Shinkuma · 2016 [cited by examiner]
US 20170329871A1 · Subramani · 2017 [cited by applicant]
US 20180121482A1 · Heen · 2018 [cited by examiner]
US 20190034425A1 · Jain · 2019 [cited by examiner]
US 20200097559A1 · Wittern · 2020 [cited by examiner]
US 20210319063A1 · Zimmerman · 2021 [cited by examiner]
US 20230137162A1 · Li · 2023 [cited by examiner]
CN 115982413 · 2023 [cited by applicant]
Feng, “Data Processing Memory and Device and Electronic Equipment” (translation), Apr. 18, 2023, pp. 1-10 (Year: 2023). [cited by examiner]
Besta et al., Demystifying graph databases: Analysis and taxonomy of data organization, system designs, and graph queries, ACM Computing Surveys 56, No. 2, arXiv:1910.09017v8, Aug. 30, 2023, pp. 1-46. [cited by applicant]