2015-01-15 3 views
1

Я использую Tinkerpop/Gremlin для запроса базы данных удаленного графика (OrientDB или Neo4J, выбор до сих пор не ясен).Tinkerpop/Gremlin и удаленный сервер

Запросы являются многоэтапным, как в этом примере:

g.v(1).out('likes').in('likes').out('likes').groupCount(m) 

Я задаюсь вопросом: есть ли сеть в обе стороны на каждом этапе запроса Gremlin? Или запрос Gremlin «скомпилирован» на язык собственных запросов моего бэкэнд, тогда собственный запрос отправляется один раз через сеть, и результаты передаются с сервера обратно клиенту?

ответ

0

Предполагая, что вы используете Neo4jHaGraph, тогда он будет работать так, как вы описываете с помощью сетевых вызовов, так как каждый шаг требует их (т. Е. Весь оператор не компилируется и не отправляется на сервер). Я не уверен в последних возможностях удаленной конфигурации для OrientGraph, хотя я подозреваю, что он работает аналогичным образом, делая сетевые вызовы по мере необходимости на каждом шаге.

Одной из причин, по которой было разработано Rexster, было разрешение на отправку скриптов Gremlin на сервер, чтобы он мог выполняться во встроенной реализации графика (например, Neo4jGraph). Таким образом, сетевые обратные вызовы будут уменьшены, поскольку выполнение обхода произойдет в пределах одной JVM.

Все вышесказанное относится к TinkerPop 2.x. С нетерпением ждем TinkerPop 3.x (еще не выпущенного), у вас будет сервер Gremlin, который заменяет Rexster и позволяет более эффективно передавать потоки результатов клиентам. Это также дает возможность продавцам оптимизировать траверсы, подобные тем, которые вы предоставили в качестве примера, чтобы быть более эффективными с учетом реализации. Пока еще не видно, как это может относиться к удаленным конфигурациям, но интересно подумать, что может быть возможно в этой области.

Смежные вопросы