2013-05-19 1 views
3

초당 메모리에 수천 개의 그래프를 만드는 응용 프로그램이 있습니다. 나는 후속 질의를 위해 이들을 유지할 수있는 방법을 찾고 싶다. 그것들은 특별히 크지 않습니다 (아마 ~ 최대 1k 노드).Python networkx 및 persistence (아마도 neo4j에서)

노드 속성과 가장자리 속성을 포함하여 전체 그래프 객체를 저장할 수 있어야합니다. 그런 다음 노드의 시간 속성을 기반으로 특정 시간 창 내에서 그래프를 검색 할 수 있어야합니다.

이 데이터를 neo4j로 강제 변환하는 간단한 방법이 있습니까? 나는 이것에 대한 예를 아직 찾지 못했다. 임베디드 neo4j와 나머지 클라이언트를 포함하여 여러 파이썬 라이브러리를 찾았지만.

그래프를 수동으로 트래버스하고 그런 식으로 저장하는 일반적인 방법이 있습니까?

더 나은 지속성 옵션이 있습니까?

답변

3

Networkx에는 여러 가지 직렬화 방법이 있습니다. 귀하의 경우에는

, 나는 graphml 직렬화를 선택할 것 :

http://networkx.github.io/documentation/latest/reference/readwrite.graphml.html

그것은 사용하기 매우 간단합니다

import networkx as nx 
nx.write_graphml('/path/to/file') 

이 Neo4j에로드하려면 Neo4j < 2.0이 제공, 당신 Tinkerpop Gremlin을 사용하여 Neo4J에서 그래프 덤프를로드 할 수 있습니다.

g.loadGraphML('/path/to/file') 

Tinkerpop은 직렬화/비 직렬화뿐 아니라 매우 유용합니다.

커미션 "dialect"가있는 다른 그래프 데이터베이스를 사용할 수 있습니다 (대부분 "청사진"드라이버가있는 경우)