Различаются ли их производительность между запросами входящих и исходящих ребер в базе данных графа? - PullRequest
0 голосов
/ 21 апреля 2020

Скажем, у меня есть вершины V () и K (), и у меня есть потенциальные ребра:

V --isChildOf--> K

V <--isParentOf-- K

Если я ищу для детей вершины V, их различия в производительности между:

V.out('isChildOf') vs V.in('isParentOf')?

База данных: NeptuneDb

Ответы [ 2 ]

3 голосов
/ 22 апреля 2020

@ cybersam ответ для Neptune не точный. В соответствии с 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.

Это можно уменьшить, включив создание индекса OSGP в лабораторном режиме.

0 голосов
/ 21 апреля 2020

[EDITED]

Для neo4j существует разница в производительности нет между обходом входящих и исходящих отношений.

Однако для Neptune входящих отношений может быть менее эффективным. Как указывает @ KafirDado sh, документация Модель данных графа Нептуна в документации гласит:

Если число отдельных предикатов в графе становится большим, стратегия доступа Neptune по умолчанию может стать неэффективным. Например, в Gremlin шаг in (), в котором не указываются метки ребер, или любой шаг, который внутренне использует функцию (), такой как both () или drop (), может стать совершенно неэффективным.

...