US 12,292,928 B2
Graph query management using bloom filters and edge delta indexes
Songting Chen, Portola Valley, CA (US)
Assigned to TigerGraph, Inc., Redwood City, CA (US)
Filed by TigerGraph, Inc., Redwood City, CA (US)
Filed on Jan. 12, 2022, as Appl. No. 17/574,373.
Claims priority of provisional application 63/136,963, filed on Jan. 13, 2021.
Prior Publication US 2022/0222298 A1, Jul. 14, 2022
Int. Cl. G06F 16/901 (2019.01); G06F 16/23 (2019.01)
CPC G06F 16/9024 (2019.01) [G06F 16/2379 (2019.01)] 13 Claims
OG exemplary drawing
 
1. A method comprising:
generating, at a memory, an index associated with each of a plurality of portions of a graph stored in a graph storage system, each index corresponding to an edge attribute type of a plurality of edge attribute types associated with edges in the associated portion of the graph, wherein each of the plurality of edge attribute types represents a characteristic of a relationship between vertexes in the graph, wherein the plurality of portions are distributed across a plurality of computing systems, and wherein the generating the index comprises:
identifying the edges in the associated portion of the graph having the edge attribute type, wherein each edge of the edges includes a unique identifier and one or more edge attribute values each having at least one of the plurality of edge attribute types, and
populating the index with a plurality of entries, each of the plurality of entries associating a set of edge attribute values for the edge attribute type with one or more of the unique identifiers for one or more of the edges having the set of edge attribute values, wherein the set of edge attribute values comprises one or more specific values for the edge attribute type, and wherein at least one entry of the plurality of entries comprises at least two unique identifiers;
generating, at the memory, a bloom filter for each of the plurality of portions based on edge attribute values in the portion, wherein the bloom filter is generated using hashes of edge attribute values that correspond to one or more bits in the bloom filter;
generating, at the memory, a delta index associated with a first portion of the plurality of portions based on one or more modifications to the graph, wherein the delta index comprises a delta entry identifying a change affecting a corresponding entry of the plurality of entries in the index associated with the first portion;
updating the bloom filter for the first portion based on the change identified in the delta index;
obtaining a query to the graph having one or more queried attribute values for the edge attribute type;
identifying that the first portion is relevant to the query based on its associated bloom filter and the one or more queried attribute values;
identifying that a second portion of the plurality of portions is not relevant to the query based on its associated bloom filter and the one or more queried attribute values; and
generating a response to the query based on the first portion and its associated delta index.