Как программно создать новый экземпляр графа во время выполнения на Gremlin Server - PullRequest
0 голосов
/ 30 октября 2019

У меня есть проект Java, который подключается к серверу Gremlin. Я хочу создать 5 новых экземпляров графика Neo4j во время выполнения? Как я могу сделать это на Gremlin Server, пожалуйста?

Кроме того, я слышал о сеансах и состояниях без сеансов в Gremlin Server, но не совсем понимаю цель этого ?! Может ли кто-нибудь затронуть этот вопрос, но, что более важно, показать, как использовать состояние сеанса и состояние без сеанса в моем проекте Java на Gremlin Server?

Большое спасибо заранее.

Например:

List<GraphTraversalSource> graphs;

for (int x= 0 ;  x < 5 ; x++) {
 graph = Neo4jGraph.open();
 g = graph.traversal(); 
 graphs.add(g);
}

1 Ответ

1 голос
/ 30 октября 2019

Короткий ответ заключается в том, что Gremlin Server не позволяет создавать программные графы - графы настраиваются заранее до запуска Gremlin Server.

Более длинный ответ заключается в том, что Gremlin Server является эталонной реализациейпротокола сервера Gremlin, что означает, что в зависимости от используемой вами графической базы данных с поддержкой TinkerPop вы можете получить другой ответ на свой вопрос. Например, DS Graph и JanusGraph имеют опции для построения динамического графа. Neo4j и TinkerGraph, с другой стороны, используют необработанную эталонную реализацию Gremlin Server и поэтому не имеют такой функциональности.

Этот последний момент относительно эталонной реализации приводит к еще более длинному ответу. Вы можете отправить скрипт для создания графиков, таких как Neo4jGraph или TinkerGraph, но он не добавит их в глобальный список графиков, которые содержит Gremlin Server (который вы пытались смоделировать в своем псевдокоде с помощью graphs.add(g)). Это, конечно, означает, что вы не сможете получить доступ к этим вновь созданным Graph экземплярам по будущим запросам ........ если только вы не используете сеанс . Причина того, что TinkerPop имеет запросы как без сеансов, так и с сеансами, заключается в том, что сеансы, как правило, обходятся серверу дороже, поскольку они поддерживают большее состояние между запросами и связывают запросы с одним сервером Gremlin, а не распределяют запросы по кластеру. TinkerPop рекомендует использовать безсессионный режим почти для всех вариантов использования и резервировать сессионные запросы для некоторых довольно узких вариантов использования (например, инструментов - пользовательского интерфейса визуализации на основе Gremlin).

Вероятно, есть несколько способов расширить Gremlin Server для ваших целей (JanusGraph сделал это с их пакетом Gremlin Server), но для этого потребовалось бы получить знания о самом коде. Я мог бы дать вам некоторые дополнительные рекомендации, но StackOverflow, вероятно, не является подходящим местом для этого. Не стесняйтесь задавать вопросы в списке рассылки gremlin-users , если вы хотите обсудить этот вариант более подробно.

...