Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
04-03-2020 07:48 AM
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
04-03-2020 02:43 PM
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:
ProductA,VersionA,ProductB,VersionB
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.
All the sessions of the conference are now available online