Когда сеансы гремлина лучше? - PullRequest
0 голосов
/ 11 мая 2018

Я понимаю, что бессессионные операции являются предпочтительным методом использования gremlin. Мне интересно, когда сессионный подход лучше?

Так что я мог бы делать что-то вроде ...

graph.addVertex ( "Foo"). Свойство ( "имя", "бар")

graph.traversal (). В (). Есть ( "название", "бар"). Как ( "F"). ADDV ( "Foo"). Собственности ( "название", "БАЗ"). Как ( "г"). ADDE ( "тест"). из ( "F"). к ( "G")

Я много делаю этот тип операции. Часто также есть запрос (обычно включающий объединение), чтобы проверить, существует ли узел (в моем примере это g), и создать его, если нет.

Так что мне интересно, может ли сеанс быть лучше, потому что я мог бы держать дескриптор предыдущих вершин и просто присоединять к ним новые узлы без затрат на поиск.

Не стесняйтесь говорить мне, почему я неправ во всем, что я делаю .. Просто пытаюсь сделать вещи быстрее.

1 Ответ

0 голосов
/ 11 мая 2018

Прежде всего, я бы избегал использования addVertex() и придерживался addV() - подробности здесь .

Что касается вашего вопроса, думаю, единственный разСеансы использования - это если у вас есть какая-то операция загрузки, требующая явного контроля над транзакциями, и вы не используете язык на основе JVM.Даже тогда я мог бы рассмотреть другие варианты решения этой проблемы и просто полностью избежать сессий.В итоге вы получаете менее переносимое решение, поскольку существует ряд графических систем, которые даже не поддерживают их напрямую (например, Нептун).

Стоимость поиска на основе T.id должна быть очень быстрой, поэтому сохранение вершины между запросами в сеансе на самом деле не должно значительно повысить производительность.Даже если вы сохраняете вершину между запросами, вам все равно нужно будет передать эту вершину в свой обход, чтобы у вас все равно был поиск - я не уверен, что вижу разницу в стоимости.

// first request
v = g.addV(...).property(...).next()

// second request
g.V(v).addE(....

// third request
g.V(v).addE(....

выше не должно быть намного быстрее чем:

// first request - returns id=1
g.addV(...).property(...).id().next()

// second request - where "1" is just passed in on the next request as a parameter
g.V(1).addE(....

// third request
g.V(1).addE(....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...