Is Neo4J the right tool to managing software version compatibility and interoperability?

I am trying to determine if a graphing database like Neo4j would be useful for the following:

I have created a standard SQL database to manage tested relationships between software versions. The system works by using a recursive process to test the versions of Product A to Product B to determine if a tested compatibility exists. This is simple to do if there are only 2 products. If however as is the case with many systems there may be 10 or more different software components to test together as a group. Tested relationships must be satisfied for all items.

An example may help. If there are 3 products A, B, and C each having many versions then a solution may be Product A, version 10 is tested against Product B.v20, etc.. Not all products are tested against all. In this example A is tested to B, B is tested to C and C is tested to A. The complete solution may be:

A.v10 -> B.v20, B.v20 -> C.v30, C.v30 -> A.v10

There may be many tested relationships between any two products, but for all to be compatible, all items as a set must be tested as compatible.

So... What I am asking, would Neo4J would be applicable this type of data relationships. If so, how would I start?

Thank you for your time.
Alex Lindberg

Yes, this would be basically just managing a dependency graph, and you already know the starting point I think. You have a bunch of pair-wise support relationships:


You would load this into a graph as a bunch of single relationships like this:

(:Product { name: "a", version: "VersionA" })-[:TESTED_AGAINST]->(:Product { name: "b", version: "VersionB" })

You'd start by experimenting with dumping your data to CSV, and using LOAD CSV to put a sample of it into Neo4j, and then exploring what queries you might run against it using Cypher from there.