Grapheneer
Grapheneer

Reputation: 947

Finding time-related patterns in Neo4j

Ich have designed a graph in Neo4j that represents machines, events carried out on these machines and issues that occur on these machines. Every event and every issue is attached to a time-tree node. An example for one machine including its events and issues is shown in the picture below.

Now I try to find patterns that cause issues on machines. E.g. if the machine has 5 events per day; or 2 events per day and 5 days in a row; - then on x% of machines issues occure. Or if a machines aren't used for a long time they are more likely to get an issue...and so on.

So I am looking for a way to find time-related patterns using time-trees.

At the moment I am looking for patterns in 2 ways:

  1. count number of events that happened before the issue, considering event types and related characteristics. - but too trivial, time distances not included

  2. parallel visualization of multiple event streams (as on picture) of similar machines and manual search for anomalies. This one works even better with Graphileon InterActor, - but is not a nice solution since I work with hundreds of similar machines...

Is there any way to find time-related patterns using CYPHER? The connectedness of time-trees should make it a nice use case for Neo4j right?

enter image description here

Upvotes: 1

Views: 175

Answers (1)

Bruno Peres
Bruno Peres

Reputation: 16373

Since you are trying to discover unknown patterns in your graph, you are trying to make a graph global operation.

This type of operation is often made with a graph compute engine and not with a graph database, like Neo4j.

The authors (Ian Robinson, Jim Webber, & Emil Eifrem) of the book Graph Databases says that:

A graph compute engine is a technology that enables global graph computational algorithms to be run against large datasets. Graph compute engines are designed to do things like identify clusters in your data, or answer questions such as, “how many relationships, on average, does everyone in a social network have?”

(Section "Graph Compute Engines", page 7)

Some tools suggested by the authors of the book:

Also, in the book Learning Neo4j (Section "Why not use a graph database, and what to use instead", page 40), Rik Van Bruggen says:

While graph databases are extremely powerful at answering "graph local" questions, there is an entire category of graph tools (often referred to as graph processing engines or graph compute engines) that look at the graph global problems.

That is: Neo4j is probably not a good tool to answer graph global operations like pattern discovery.

The connectedness of time-trees should make it a nice use case for Noe4j right?

Yes, but to make CRUD operations, not graph global operations.

Upvotes: 1

Related Questions