Say I have a vertices V() and K() and I have potential edges:
V --isChildOf--> K
V <--isParentOf-- K
If I'm looking for children of vertex V, are their performance differences between:
V.out('isChildOf') vs V.in('isParentOf')?
Database: NeptuneDb
Say I have a vertices V() and K() and I have potential edges:
V --isChildOf--> K
V <--isParentOf-- K
If I'm looking for children of vertex V, are their performance differences between:
V.out('isChildOf') vs V.in('isParentOf')?
Database: NeptuneDb
@cybersam answer for Neptune
is not accurate.
According to this:
If the number of distinct predicates in a graph becomes large, the default Neptune access strategy can become inefficient. In Gremlin, for example, an in() step where no edge labels are given, or any step that uses in() internally such as both() or drop(), may become quite inefficient.
This can be mitigated by enabling OSGP Index Creation Using Lab Mode.
[EDITED]
For neo4j
, there is no performance difference between traversing inbound versus outbound relationships.
However, for Neptune
, inbound relationships can be less efficient. As pointed out by @KafirDadosh, the Neptune Graph Data Model documentation states:
If the number of distinct predicates in a graph becomes large, the default Neptune access strategy can become inefficient. In Gremlin, for example, an in() step where no edge labels are given, or any step that uses in() internally such as both() or drop(), may become quite inefficient.