IP Library Granted Patent US 10,552,450
Granted Patent B2
US 10,552,450 · App. 15/230,071 · Granted Feb 4, 2020

Distributed graph databases that facilitate streaming data insertion and low latency graph queries

Inventors: Chun-Fu Chen (Elmsford, NY); Jason L. Crawford (Katonah, NY); Ching-Yung Lin (Scarsdale, NY); Jie Lu (Westchester, NY); Mark R. Nutter (Austin, TX); Toyotaro Suzumura (New York, NY); Ilie G. Tanase (Somers, NY); Danny L. Yeh (Tarrytown, NY)
Assignee: International Business Machines Corporation
G06F16/273
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 10,552,450
App. No.
15/230,071
Granted
Feb 4, 2020
Kind
B2
Abstract

A novel distributed graph database is provided that is designed for efficient graph data storage and processing on modern computing architectures. In particular a single node graph database and a runtime & communication layer allows for composing a distributed graph database from multiple single node instances.

Claims (39)

1. A computer-implemented method to provide low latency graph queries of a distributed graph database having a plurality of shards, comprising:

receiving, by a query manager, one or more graph queries requesting edge addition to the distributed graph database from one or more clients; and

performing, by one or more threads of execution managed by the query manager, one or more edge additions in response to the one or more graph queries;

wherein a thread of execution performs an edge addition by:

sending, by the thread, a first asynchronous request to a first node containing a first shard, the first asynchronous request identifying a source vertex, an edge label (LID), and a target vertex, thereby causing the first node to add to the first shard the target vertex and to generate a target vertex identifier (VIDT) corresponding to the target vertex;

sending, by the first node, a second asynchronous request to a second node containing a second shard, the second asynchronous request identifying the source vertex, the LID, and the VIDT, thereby causing the second node to add to the second shard the source vertex, to generate a source vertex identifier (VIDS) corresponding to the source vertex, to add to the second shard an outgoing edge labelled with the LID and associated with the source vertex, and to generate an edge identifier (EID) corresponding to the outgoing edge; and

sending, by the second node, the VIDS, the LID, the EID, and the VIDT to the first node, thereby causing the first node to add to the first shard an incoming edge associated with the target vertex and having as attributes the LID and the EID.

2. The computer-implemented method of claim 1 , wherein additional query managers are instantiated to accommodate increasing load.

3. The computer-implemented method of claim 1 , wherein the query manager runs on its own machine with a variable number of threads, each thread being capable of performing a traversal.

4. The computer-implemented method of claim 1 , wherein multiple graph traversals are handled concurrently by multiple threads.

5. The computer-implemented method of claim 1 , wherein the query manager is associated with a plurality of query managers and wherein each of the plurality of query managers maintains a connection with respective dbase shards.

6. The computer-implemented method of claim 5 , further comprising:

placing, by the query manager, asynchronous requests to all dbase shards.

7. A system that provides low latency graph queries of a distributed graph database having a plurality of shards, comprising:

a memory that stores computer executable instructions; and

a processor that executes the computer executable instructions stored in the memory, wherein execution of the computer executable instructions causes the processor to:

receive, by a query manager, one or more graph queries requesting edge addition to the distributed graph database from one or more clients; and

perform, by one or more threads of execution managed by the query manager, one or more edge additions in response to the one or more graph queries;

wherein a thread of execution performs an edge addition by:

sending, by the thread, a first asynchronous request to a first node containing a first shard, the first asynchronous request identifying a source vertex, an edge label (LID), and a target vertex, thereby causing the first node to add to the first shard the target vertex and to generate a target vertex identifier (VIDT) corresponding to the target vertex;

sending, by the first node, a second asynchronous request to a second node containing a second shard, the second asynchronous request identifying the source vertex, the LID, and the VIDT, thereby causing the second node to add to the second shard the source vertex, to generate a source vertex identifier (VIDS) corresponding to the source vertex, to add to the second shard an outgoing edge labelled with the LID and associated with the source vertex, and to generate an edge identifier (EID) corresponding to the outgoing edge; and

sending, by the second node, the VIDS, the LID, the EID, and the VIDT to the first node, thereby causing the first node to add to the first shard an incoming edge associated with the target vertex and having as attributes the LID and the EID.

8. The system of claim 7 , wherein additional query managers are instantiated to accommodate increasing load.

9. The system of claim 7 , wherein the query manager also runs on its own machine with a variable number of threads, each thread being capable of performing a traversal.

10. The system of claim 7 , wherein multiple graph traversals are handled concurrently by multiple threads.

11. The system of claim 8 , wherein additional query managers maintain a connection with each respective dbase shard.

12. The system of claim 7 , wherein the query manager also places asynchronous requests to all dbase shards.

13. A computer program product to provide low latency graph queries of a distributed graph database having a plurality of shards, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processing component to cause the processing component to:

receive, by a query manager, one or more graph queries requesting edge addition to the distributed graph database from one or more clients; and

perform, by one or more threads of execution managed by the query manager, one or more edge additions in response to the one or more graph queries;

wherein a thread of execution performs an edge addition by:

sending, by the thread, a first asynchronous request to a first node containing a first shard, the first asynchronous request identifying a source vertex, an edge label (LID), and a target vertex, thereby causing the first node to add to the first shard the target vertex and to generate a target vertex identifier (VIDT) corresponding to the target vertex;

sending, by the first node, a second asynchronous request to a second node containing a second shard, the second asynchronous request identifying the source vertex, the LID, and the VIDT, thereby causing the second node to add to the second shard the source vertex, to generate a source vertex identifier (VIDS) corresponding to the source vertex, to add to the second shard an outgoing edge labelled with the LID and associated with the source vertex, and to generate an edge identifier (EID) corresponding to the outgoing edge; and

sending, by the second node, the VIDS, the LID, the EID, and the VIDT to the first node, thereby causing the first node to add to the first shard an incoming edge associated with the target vertex and having as attributes the LID and the EID.

14. The computer program product of claim 13 , wherein the program instructions are further executable by the processing component to cause the processing component to instantiate additional query managers to accommodate increasing load.

15. The computer program product of claim 13 , wherein the program instructions are further executable by the processing component to cause the processing component to run the query manager on its own machine with a variable number of threads, each thread being capable of performing a traversal.

16. The computer program product of claim 13 , wherein the program instructions are further executable by the processing component to cause the processing component to handle multiple graph traversals concurrently by multiple threads.

17. The computer program product of claim 13 , wherein the program instructions are further executable by the processing component to cause each respective query manager to maintain a connection with each respective dbase shard.

18. The computer program product of claim 13 , wherein the program instructions are further executable by the processing component to place asynchronous requests from the query manager to all dbase shards.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2016
From: CHEN, CHUN-FU; CRAWFORD, JASON L.; LIN, CHING-YUNG; LU, JIE; NUTTER, MARK R.; SUZUMURA, TOYOTARO; TANASE, ILIE G.; YEH, DANNY L.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 039358/0129 →
Continuity (1)
Related Publication 20180039673A1 · Feb 8, 2018