I'm currently evaluating AWS Neptune as a potential graph database (specifically comparing it to Azure Cosmos Graph DB). The scenario is that I have a bunch of test data which I'm adding with the bulk loader and will then run some benchmarking tests on the DB performance.
I'm curious about how best to model the data in AWS Neptune.
In Azure Cosmos Graph DB, edges are unidirectional and are stored on the source vertex. So queries which need to look for inbound edges will be slow unless an edge is also stored on the other vertex.
So far in AWS Neptune, I've not found an answer on how the edges can be best optimised in a similar way.
Reading this description of the Neptune internal data model (https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-data-model.html) suggests that there's a common storage pattern used for both vertices, edges and properties which are indexed using the 3 most common access patterns.
So I would assume based on this that:
- we need to store both incoming and outgoing edges, or
- we need to enable "OSGP Index Creation Using Lab Mode" to index from both directions
What is the best approach here?