GraphGists

Neo4j is often used to model complex graphs in Network Management scenarios. This is a pseudo setup for a network management graph and some sample queries.

CREATE
  (crm {name:"CRM"}),
	(dbvm {name:"Database VM"}),
	(www {name:"Public Website"}),
	(wwwvm {name:"Webserver VM"}),
	(srv1 {name:"Server 1"}),
	(san {name:"SAN"}),
	(srv2 {name:"Server 2"}),

	(crm)-[:DEPENDS_ON]->(dbvm),
	(dbvm)-[:DEPENDS_ON]->(srv2),
	(srv2)-[:DEPENDS_ON]->(san),
	(www)-[:DEPENDS_ON]->(dbvm),
	(www)-[:DEPENDS_ON]->(wwwvm),
	(wwwvm)-[:DEPENDS_ON]->(srv1),
	(srv1)-[:DEPENDS_ON]->(san)

Impact analytics: Server 1 is down - what is affected?

// Server 1 Outage
MATCH (n)<-[:DEPENDS_ON*]-(upstream)
WHERE n.name = "Server 1"
RETURN upstream

Statistics - What depends on the SAN?

// Most depended on component
MATCH (n)<-[:DEPENDS_ON*]-(dependent)
WHERE n.name='SAN'
RETURN n,
count(DISTINCT dependent)
AS dependents
ORDER BY dependents DESC
LIMIT 1

Try for yourself!