IP Library Granted Patent US 10,733,055
Granted Patent B1
US 10,733,055 · App. 14/798,029 · Granted Aug 4, 2020

Methods and apparatus related to graph transformation and synchronization

Inventor: Duncan Paul Grisby (Trumpington, GB)
Assignee: BMC SOFTWARE, INC.
G06F11/1446G06F16/254G06F16/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 10,733,055
App. No.
14/798,029
Granted
Aug 4, 2020
Kind
B1
Abstract

In one general aspect, a computer system can include instructions configured to store on a non-transitory computer-readable storage medium. The computer system can include a subgraph transformer configured to transform a plurality of subgraphs of a source graph into a plurality of transformed subgraphs, and configured to define a target graph that is a transformed version of the source graph based on the plurality of transformed subgraphs. The computer system can include a change detector configured to receive an indicator that a portion of the source graph has been changed, and a synchronization module configured to synchronize a portion of the target graph with the changed portion of the source graph.

Claims (76)

1. A graph transformation module comprising:

a programmable processor; and

a machine-readable storage device storing a computer program that, when executed by the programmable processor, causes the graph transformation module to:

receive, from a source system through a network, a plurality of subgraphs of a source graph, the source graph being incompatible with a target system, a root node of the source graph representing at least one of a program class or a server class;

transform the plurality of subgraphs of the source graph into a plurality of transformed subgraphs, the transforming including transforming a first process into a second process, the transforming including:

traversing a tree structure of the source graph;

identifying a root node of a target graph corresponding to the root node of the source graph;

deleting a relationship between the root node of the source graph and a first other node of the source graph; and

adding a relationship between the first other node and a second other node of the source graph; and

define the target graph based on the transforming, the target graph being compatible with the target system, the target graph being compatible with a configuration management database (CMDB) and being a transformed version of the source graph based on the plurality of transformed subgraphs.

2. The graph transformation module of claim 1 , wherein the target graph has a structure other than a tree structure.

3. The graph transformation module of claim 1 , wherein the transforming at least one of the subgraphs of the source graph modifies the at least one subgraph of the source graph such that at least one node is no longer included in the subgraph of the source graph.

4. The graph transformation module of claim 1 , wherein at least one node of the target graph represents a program class.

5. The graph transformation module of claim 1 , wherein at least one node of the target graph represents a server class.

6. The graph transformation module of claim 1 , wherein at least a first node of the target graph includes a first program class and at least a second node of the target graph includes a second program class.

7. The graph transformation module of claim 1 further configured to locate and remove instances of the second process from the transformed subgraphs.

8. The graph transformation module of claim 1 , wherein the source graph includes a plurality of nodes and relationships between the plurality of nodes, each subgraph from the plurality of subgraphs including at least a portion of the plurality of nodes and at least a portion of the relationships between the plurality of nodes.

9. The graph transformation module of claim 1 , wherein the computer program further causes the graph transformation module to:

receive, from the source system through the network, an indicator that the source graph has been changed, the change to the source graph resulting in a changed portion;

in response to receiving the indicator, identify a subgraph of the source graph that includes the changed portion; and

synchronize, through the network, the changed portion of the source graph with a corresponding portion of the target graph included in the target system.

10. The graph transformation module of claim 1 , wherein each subgraph from the plurality of subgraphs is identified for transformation into a plurality of subgraphs based on a subgraph collection rule, a first portion of the plurality of subgraphs being transformed during a first time period and a second portion of the plurality of subgraphs being transformed during a second time period.

11. The graph transformation module of claim 9 , wherein the computer program is further configured to cause the graph transformation module to identify the portion of the target graph for synchronization based on a key of the changed portion of the source graph matching a key of the portion of the target graph.

12. The graph transformation module of claim 1 , wherein a transformed subgraph from the plurality of transformed subgraphs of the target graph corresponds with a subgraph from the plurality of subgraphs of the source graph, the transformed subgraph associated with the target graph including nodes and relationships between nodes in a configuration different from nodes and relationships between nodes of the subgraph associated with the source graph.

13. The graph transformation module of claim 9 , wherein the computer program is further configured to cause the graph transformation module to:

produce a first transformed subgraph based on a version of the subgraph of the source graph before the change to the subgraph and a second transformed subgraph based on a version of the subgraph before the change to the subgraph of the source graph, and

synchronize the portion of the target graph within the changed portion of the source graph based on the first transformed subgraph and based on the second transformed subgraph.

14. The graph transformation module of claim 9 , further comprising:

a node identifier configured to identify a node within the source graph as the root node of the source graph associated with the changed portion of the source graph, the portion of the target graph that is synchronized including the root node of the target graph corresponding with the root node of the source graph.

15. The graph transformation module of claim 1 , wherein the computer program further causes the graph transformation module to compare a target subgraph of the target graph with a transformed source subgraph of the source graph.

16. A non-transitory computer-readable storage medium storing instructions that when executed cause a graph transformation module to perform a process, the instructions comprising instructions to:

transform, in response to receiving an indicator from a source system through a network that a user has changed a portion of a source graph, a plurality of subgraphs of the source graph into a plurality of transformed subgraphs, the source graph being configured for use in the source system, a root node of the source graph including at least one of a program class or a server class, the source system being configured to discover network devices, the transforming including transforming a first process into a second process, the transforming including:

traversing a tree structure of the source graph;

identifying a root node of a target graph corresponding to the root node of the source graph;

deleting a relationship between the root node of the source graph and a first other node of the source graph; and

adding a relationship between the first other node and a second other node of the source graph; and

define the target graph based on the transforming, for use in a target system comprising a Configuration Management Database (CMDB) configured to generate impact relationships, the target graph being a transformed version of the source graph based on the plurality of transformed subgraphs.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the target graph has a structure other than the tree structure.

18. The non-transitory computer-readable storage medium of claim 16 , wherein at least one node of the target graph represents a program class.

19. The non-transitory computer-readable storage medium of claim 16 , wherein at least one node of the target graph represents a server class.

20. A non-transitory computer-readable storage medium storing instructions that when executed cause a graph transformation module to perform a process, the instructions comprising instructions to:

receive, from a source system through a network, an indicator of a changed portion of a source graph included in the source system, the source system including a plurality of nodes and relationships between at least a portion of the plurality of nodes, the source graph being configured for use in the source system including a system that discovers network devices, a root node of the source graph representing at least one of a program class or a server class;

identify, in response to the indicator, a subgraph of the source graph that includes the changed portion and at least one source node based on at least one type of transformation that was performed on the subgraph of the source graph, the subgraph of the source graph representing relationships between nodes including showing nodes within each other, the at least one type of transformation including transforming a first process into a second process, the at least one type of transformation including:

traversing a tree structure of the source graph;

identifying a root node of a target graph corresponding to the root node of the source graph;

deleting a relationship between the root node of the source graph and a first other node of the source graph; and

adding a relationship between the first other node and a second other node of the source graph;

identify a subgraph of the target graph included in a target system, the target graph resulting from the at least one type of transformation of the subgraph of the source graph, the subgraph of the target graph representing relationships between nodes including showing lines between nodes, the target graph being for use in the target system including a configuration management database (CMDB) configured to generate impact relationships; and

modify, through the network, the subgraph of the target graph corresponding to the changed portion of the source graph based on a log characterizing changes to the changed portion to the source graph.

21. The non-transitory computer-readable storage medium of claim 20 , wherein the target graph has a structure other than a tree structure.

22. The non-transitory computer-readable storage medium of claim 20 , wherein at least one node of the target graph includes a program class.

23. The non-transitory computer-readable storage medium of claim 20 , wherein at least one node of the target graph includes a predefined program.

24. The non-transitory computer-readable storage medium of claim 20 , wherein at least a portion of the changed portion of the source graph is based on deletion of the source node from the source graph.

25. A graph transformation module comprising:

a programmable processor; and

a machine-readable storage device storing a computer program that, when executed by the programmable processor, causes the graph transformation module to transform a source graph received from a source system into a target graph and send the target graph to a target system, a root node of the source graph representing at least one of a program class or a server class, each of the source graph and the target graph comprising elements in a configuration management database (CMDB), the target graph arranging the elements in a format that is not a tree, the transforming including:

traversing a tree structure of the source graph;

identifying a root node of the target graph corresponding to the root node of the source graph;

deleting a relationship between the root node of the source graph and a first other node of the source graph; and

adding a relationship between the first other node and a second other node of the source graph.

26. The graph transformation module of claim 25 , wherein the source graph and the target graph are subgraphs consisting of a portion of the elements in the CMDB.

27. The graph transformation module of claim 25 , wherein the elements are selected from processes, computers, processors, and network devices.

28. The graph transformation module of claim 27 , wherein one of the elements that is a process is an enterprise application.

29. The graph transformation module of claim 28 , wherein the enterprise application is a program class.

30. The graph transformation module of claim 27 , wherein one of the elements is a processor and the processor further includes an additional attribute.

31. The graph transformation module of claim 30 , wherein the additional attribute is selected from processor type, processor speed, internal memory capacity, and core processor capability.

32. The graph transformation module of claim 25 , wherein the computer program further causes the graph transformation module to:

indicate that the source graph has been changed; and

synchronize at least a portion of the target graph with a changed portion of the source graph.

33. A graph transformation module comprising:

a programmable processor; and

a machine-readable storage device storing a computer program that, when executed by the programmable processor, causes the graph transformation module to transform a source graph received from a source system into a target graph and send the target graph to a target system, a root node of the source graph representing at least one of a program class or a server class, each of the source graph and the target graph comprising nodes representing users or user accounts in a social network, the target graph arranging the nodes in a format that is not a tree, the transforming including:

traversing a tree structure of the source graph;

identifying a root node of the target graph corresponding to the root node of the source graph;

deleting a relationship between the root node of the source graph and a first other node of the source graph; and

adding a relationship between the first other node and a second other node of the source graph.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2015
From: GRISBY, DUNCAN P.
To: BMC SOFTWARE, INC.
Reel/Frame 036082/0149 →
Cited By (1)
US 12,670,204