2015-01-30 8 views
5

내 그래프 저장에 최신 커뮤니티 Neo4j (2.2.0-M03)를 사용하고 있습니다. Python에서 액세스하는 데 관심이 있습니다. 공식 Neo4j documentation에 따르면, 몇 가지 대안이 있습니다.2015 년 Python에서 Neo4j를 사용하는 가장 적절한 방법

문서를 확인하고 조금 놀고 this post을 확인하면 py2neo 만 Neo4j 2 (및 레이블)를 지원합니다. 그러나 Neo4j에서 특정 알고리즘을 작성하고 실행하려면 전구를 통해 Gremlin을 사용해야하지만 Neo4j 2를 지원하지는 않아야합니다.

현재 일부 사용자 지정 알고리즘을 사용하고 싶지 않습니다. Neo4j에서 Spreading Activation을 좋아합니다. Java에서 Neo4j에 알고리즘을 직접 작성하고 python 대신 cypher 명령을 사용하여 Python에서 알고리즘을 실행하고 있습니까? 내가 놓친 게 있니?

건배

ps. 내가 인용 한 모든 소프트웨어에 대한 링크를 게시하고 싶었지만 불행히도 2 개 이상의 링크를 게시하려면 적어도 10 개의 명성이 필요합니다 ...

+0

"쓰기 알고리즘"이란 무엇을 의미 할 수 있습니까? 어떤 종류? 그렇습니다. 일반적으로 py2neo는 갈 길입니다.하지만 여러분이하려고하는 것을 지정하지 않으면 조언을하는 것이 어려울 것입니다. – FrobberOfBits

+0

감사합니다. @FrobberOfBits, 질문을 편집했습니다. 사용자 정의 알고리즘 (예 : 확산 활성화)을 사용하고 싶습니다. – redsk

+0

이것은 "Neo4j에서 Java로 직접 알고리즘을 작성하고 http를 통해 Python에서 실행할 수있는 유일한 방법입니까?" –

답변

4

이것은 매우 힘든 질문으로, 빠른 neo4j 질문이 아닌 것 같습니다. . 확산 활성화를 사용하는 방법에 따라 서버를 수정하지 않는 것이 더 좋을 수 있지만 유스 케이스가 관련되어있어 말할 수 없습니다. 언제나 neo4j를 그래프 저장소로 사용할 수 있으며, 서버가 아닌 애플리케이션 코드에 활성화 확산과 같은 상위 개념을 넣을 수 있습니다.

질문은 서버에 넣고 싶다고 생각합니다. 그렇다면 옵션은 무엇입니까? 광범위하게, 당신은 서버 플러그인을 작성하고 RESTful API를 확장 할 수있다. (py2neo를 사용하면 도움이되지 않을 것이다.) 반면에, 나는 자신의 커스텀 사이퍼 함수를 ​​정의하는 것이 현재 지원되고 있다고 생각하지 않는다. 사이퍼 언어 자체를 수정 한 다음 py2neo 바인딩을 사용하여 새롭고 멋진 사이퍼 (cypher) 기능을 활용하십시오. Advice given elsewhereunmanaged extension을 확산 활성화로 구현하는 것이 좋습니다. 당신이 이것을했다면, 다시 한번 py2neo가 당신을 도울 방법을 보지 못합니다.

단기적으로는 가 아닌 neo4j 자체를 수정하는 것이 아니라 py2neo를 사용하는 Python 코드에 확산 활성화를 적용하는 것이 좋다고 생각합니다. 장기적으로, neo4j가 개발 로드맵에있는 cypher 사용자 정의 함수 (UDF)를 수행하는 방법을 생각해 보면 (아마도?) 그러면 더 나은 옵션이 될 수 있지만 많은 경우를 제외하고는 권장하지 않습니다. 더 많은 요구 사항 및 세부 정보.

+0

@FrobberOfBits 감사합니다. 나는 실제로 내 응용 프로그램의 좋은 디자인을 고안 할 때 어떤 대안을 고려할 수 있는지 알아 내려고했습니다. Neo4j 관리되지 않는 확장 기능은 실제로 좋은 제안입니다. – redsk

+0

가능한 대안은 [Gremlin] (https://github.com/tinkerpop/gremlin/wiki) 그래프 언어를 사용하는 것입니다 (아마도 [tinkerpop3] (http://www.tinkerpop.com/)을 통해 가능할 것입니다. Neo4j 2.2 afaik)이 경우 p2neo는 [특정 확장명] (http://py2neo.org/2.0/ext/gremlin.html)을 통해 Gremlin 스크립트 호출을 지원합니다. – redsk

+0

마지막으로, 제안한대로 확산 활성화 (또는 다른 그래프 알고리즘)는 Python에서 직접 구현 될 수 있습니다 (아마도 py2neo이지만). 그러나이 경우 알고리즘의 각 단계가 Neo4j에서 Python 응용 프로그램으로 앞뒤로 데이터를 전달한다는 의미이므로 성능이 조금 떨어질 것으로 예상됩니다. – redsk