Rather than store all Scene-Scene and Scene-Device connections in Neo4j, we should also offer an alternative where Scene-Device connections are stored in an RDBMS.
Why?
Neo4j cannot shard it's DB, which makes horizontal scaling difficult. The best approach to address this is to put the data into Neo4j that we care about, and nothing else. In this case, the data we really care about is Scene-Scene transforms. These are what's necessary for the shortest-path algorithm to work, and to offer all of our key functionality. By storing the Scene-Device connections in a DB that can shard, we maximize the scalability of the solution.
Rather than store all Scene-Scene and Scene-Device connections in Neo4j, we should also offer an alternative where Scene-Device connections are stored in an RDBMS.
Why? Neo4j cannot shard it's DB, which makes horizontal scaling difficult. The best approach to address this is to put the data into Neo4j that we care about, and nothing else. In this case, the data we really care about is Scene-Scene transforms. These are what's necessary for the shortest-path algorithm to work, and to offer all of our key functionality. By storing the Scene-Device connections in a DB that can shard, we maximize the scalability of the solution.