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

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

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

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

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


person npobedina    schedule 22.05.2012    source источник


Ответы (3)


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

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

person Nigel Small    schedule 23.05.2012

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

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

Вот как выполнить скрипты Gremlin из Bulbs (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 Bulbs Gremlin находится здесь: http://bulbflow.com/docs/api/bulbs/gremlin/

person espeed    schedule 24.05.2012
comment
спасибо за рекомендацию. Я уже читал сравнение Gremlin vs Cypher. Итак, я думаю, мне нужно попробовать оба, чтобы решить, какой из них больше подходит для моего варианта использования. Кажется, возникла проблема с веб-сайтом bulbflow. Вы не знаете, скоро ли он появится? - person npobedina; 30.05.2012
comment
Возникла проблема с DNS, которая обновляется. На данный момент вы можете получить к нему доступ здесь: bulbflow.herokuapp.com - person espeed; 31.05.2012
comment
Можно ли выполнять запросы Cypher к neo4j с помощью bulbflow? документация по этому вопросу кажется неясной. действительно ли лучше (быстрее) придерживаться Gremlin при работе с лампочкой? - person npobedina; 11.01.2013
comment
Да, см. этот ответ для примеров того, как выполнять запросы Cypher в Bulbs: #15358024" title="Разница bulbflow между графиком neo4jserver и neo4jserver neo4jclient"> stackoverflow.com/questions/14281251/ - person espeed; 06.08.2013

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

person Peter Neubauer    schedule 23.05.2012
comment
Должен признаться, я не знаком с Джанго. Разве это не связано с веб-приложениями? Я делаю все локально на 1 машине прямо сейчас. Должен ли я все еще проверить это? - person npobedina; 23.05.2012