Выбор подходящего способа использования Neo4j в Python

В настоящее время я использую встроенную привязку python для neo4j. В настоящее время у меня нет никаких проблем, так как мой график очень маленький (разреженный и до 100 узлов). Алгоритм, который я разрабатываю, включает в себя довольно много обходов на графике, более конкретно DFS на графике вообще, а также на разных подграфах. В будущем я намерен запустить алгоритм на больших графиках (предположительно разреженных и с миллионами узлов).

Прочитав разные потоки, связанные с производительностью привязок python/neo4j здесь, здесь, интересно, должен ли я уже переключиться на какой-то клиент REST API для Python (например, bulbflow, py2neo, neo4jrestclient), пока я не перейду далеко, чтобы изменить весь код.

К сожалению, я не нашел исчерпывающего источника информации для сравнения различных подходов.

Может ли кто-нибудь дать дополнительную информацию об этой проблеме? Какие критерии следует принимать во внимание при выборе одного из вариантов?

Ответ 1

Django - это веб-фреймворк MVC, поэтому вы можете быть заинтересованы в том, чтобы ваше приложение было веб-приложением.

С точки зрения py2neo (из которых я являюсь автором), я стараюсь сосредоточиться на производительности, используя механизм пакетного выполнения автоматически, когда это необходимо, а также обеспечивает сильную поддержку Cypher. Недавно я также много работал над тем, чтобы обеспечить хорошие возможности управления уникальностью в индексах - в частности, методы get_or_create и add_if_none.

Ответ 2

Самый простой способ запускать алгоритмы из Python - использовать Gremlin (https://github.com/tinkerpop/gremlin/wiki).

С помощью Gremlin вы можете связать все в один HTTP-запрос, чтобы уменьшить накладные расходы в оба конца.

Здесь, как выполнить скрипты Гремлина из луковиц (http://bulbflow.com):

>>> from bulbs.neo4jserver import Graph
>>> g = Graph()
>>> script = "g.v(id).out('knows').out('knows')"
>>> params = dict(id=3)
>>> g.gremlin.execute(script, params)

Документы API "Лампочки Gremlin" находятся здесь: http://bulbflow.com/docs/api/bulbs/gremlin/

Ответ 3

Не уверен, я не эксперт, но я думаю, что это также зависит от ваших ожиданий от Django и от того, какая часть структуры вам нужна. Py2neo очень прагматичен и тонкий, Bulbflow, похоже, создает целый стек сопоставления и т.д., А neo4jrestclient концентрируется на Django (это может быть неправильно)?