Я пытаюсь написать хорошо масштабируемую систему с помощью titandb. У меня есть ситуация, когда некоторые узлы сильно связаны. Представьте себе следующий пример в гораздо большем масштабе.
Сейчас у меня следующие ситуации:
- Я хочу найти всех друзей узла X.
- Я хочу найти определенного друга узла X, например 5.
Для сценария 1 я делаю: g.V(X).out(friend).toList()
. Для сценария 2 я делаю: g.V(X).out(friend).hasId(5).next()
. Оба этих обхода будут работать, но плохо масштабируются, поскольку X получает больше друзей. Могу ли я оптимизировать эту ситуацию, поместив больше информации на метку края? Например, если на границе между X и 5 я изменю метку на freind_with_5
, следующее будет работать быстрее:
`g.V(X).out(freind_with_5).next()`
Насколько я понимаю, это будет быстрее, так как будет пройдено только 1 ребро. Однако, если я внесу такое изменение в метки ребер, как мне найти всех друзей X?