Data replication and recursive tree structure searching
Systems, methods, and non-transitory storage media are provided for replication of data and/or retrieval of (replicated) data using recursive tree structure searching. For instance, a system may use one or more self join operations to expand a tree graph in fewer iterations that are taken with typical tree graph expansion methods. Once the tree graph is expanded, the system can respond to a query by providing a list of child paths of a node referenced in the query or a list of parent nodes of a node referenced in the query.
1 . A computer-implemented method, comprising:
transmitting, to a product lifecycle management (PLM) system, a request for PLM data;
generating a tree graph and migrating the PLM data to nodes of the tree graph;
storing the tree graph in a model data store;
identifying, in a first iteration, a plurality of first paths in a tree graph, wherein each first path in the plurality of first paths is a path between a parent node in the tree graph and a child node of the parent node;
joining, in a second iteration that is subsequent to the first iteration, each first path in the plurality of first paths identified in the first iteration with a second first path in the plurality of first paths identified in the first iteration that starts at a node in the tree graph at which the respective first path ends to form a plurality of joined paths, wherein each joined path in the plurality of joined paths has a length of three;
joining, in a third iteration that is subsequent to the second iteration, each joined path in the plurality of joined paths from the second iteration with another joined path in the plurality of joined paths from the second iteration that starts at a node in the tree graph at which the respective joined path ends to form a plurality of second joined paths, wherein each second joined path in the plurality of second joined paths has a length of five;
receiving, from a client device, a query that identifies a target node in the tree graph that corresponds to a component part of a system;
in response to receiving the query,
searching the plurality of second joined paths for child paths of the target node; and
generating a list of the child paths of the target node based on the searching;
retrieving, from the model data store, a portion of the PLM data associated with the child paths of the target node; and
transmitting the list and the portion of the PLM data associated with the child paths of the target node to the client device.
2 . The computer-implemented method of claim 1 , wherein the query comprises a request for a reverse bill of material search of the PLM data.
3 . The computer-implemented method of claim 1 , wherein joining each first pair in the plurality of first paths further comprises:
generating a new edge that includes a head of one of the first paths in the plurality of first paths as a head of the new edge and a tail of one of the second first paths in the plurality of first paths as a tail of the new edge; and
appending the new edge to a working list.
4 . The computer-implemented method of claim 1 , wherein further comprising repeating a join operation until a distance associated with a current iteration is greater than a distance of any path in a working list.
5 . A system, comprising:
at least one processor; and
at least one non-transitory storage media storing instructions that, when executed by the at least one processor, cause the at least one processor to:
transmit, to a product lifecycle management (PLM) system, a request for PLM data;
generate a tree graph and migrating the PLM data to nodes of the tree graph;
store the tree graph in a model data store
identify, in a first iteration, a plurality of first paths in a tree graph, wherein each first path in the plurality of first paths is a path between a parent node in the tree graph and a child node of the parent node;
join, in a second iteration that is subsequent to the first iteration, each first path in the plurality of first paths identified in the first iteration with a second first path in the plurality of first paths identified in the first iteration that starts at a node in the tree graph at which the respective first path ends to form a plurality of joined paths, wherein each joined path in the plurality of joined paths has a length of three;
join, in a third iteration that is subsequent to the second iteration, each joined path in the plurality of joined paths from the second iteration with another joined path in the plurality of joined paths from the second iteration that starts at a node in the tree graph at which the respective joined path ends to form a plurality of second joined paths, wherein each second joined path in the plurality of second joined paths has a length of five;
receive, from a client device, a query that identifies a target node in the tree graph that corresponds to a component part of a system;
in response to reception of the query,
search the plurality of second joined paths for child paths of the target node; and
generate a list of the child paths of the target node based on the search;
retrieve, from the model data store, a portion of the PLM data associated with the child paths of the target node; and
transmit the list and the portion of the PLM data associated with the child paths of the target node to the client device.
6 . The system of claim 5 , wherein the query comprises a request for a reverse bill of material search of the PLM data.
7 . The system of claim 5 , wherein the instructions, when executed, further cause the at least one processor to:
generate a new edge that includes a head of one of the first paths in the plurality of first paths as a head of the new edge and a tail of one of the second first paths in the plurality of first paths as a tail of the new edge; and
append the new edge to a working list.
8 . The system of claim 5 , wherein the instructions, when executed, further cause the at least one processor to repeat a join operation until a distance associated with a current iteration is greater than a distance of any path in a working list.
9 . At least one non-transitory storage media storing instructions that, when executed by at least one processor, cause the at least one processor to perform operations, the operations comprising:
transmitting, to a product lifecycle management (PLM) system, a request for PLM data;
generating a tree graph and migrating the PLM data to nodes of the tree graph;
storing the tree graph in a model data store;
identifying, in a first iteration, a plurality of first paths in a tree graph, wherein each first path in the plurality of first paths is a path between a parent node in the tree graph and a child node of the parent node;
joining, in a second iteration that is subsequent to the first iteration, each first path in the plurality of first paths identified in the first iteration with a second first path in the plurality of first paths identified in the first iteration that starts at a node in the tree graph at which the respective first path ends to form a plurality of joined paths, wherein each joined path in the plurality of joined paths has a length of three;
joining, in a third iteration that is subsequent to the second iteration, each joined path in the plurality of joined paths from the second iteration with another joined path in the plurality of joined paths from the second iteration that starts at a node in the tree graph at which the respective joined path ends to form a plurality of second joined paths, wherein each second joined path in the plurality of second joined paths has a length of five;
receiving, from a client device, a query that identifies a target node in the tree graph that corresponds to a component part of a system;
in response to reception of the query,
searching the plurality of second joined paths for child paths of the target node; and
generating a list of the child paths of the target node based on the search;
retrieving, from the model data store, a portion of the PLM data associated with the child paths of the target node; and
transmiting the list and the portion of the PLM data associated with the child paths of the target node to the client device.