저는 약간 큰 텍스트 파일 (약 100k 라인)을 읽고 구문 분석하고 해당 데이터와 함께 Neo4j 노드를 구축합니다 (나는 Neography를 사용하고 있습니다) Ruby on Rails 프로젝트 작업 중입니다. 이 내가 쓴 코드의 Neo4j 관련 부분입니다 : 내가 뭘 원하는큰 파일을 파싱하고 Neo4j 데이터베이스를 채 웁니다.
d= Neography::Rest.new.execute_query("MATCH (n:`Label`) WHERE (n.`name`='#{id}') RETURN n")
d= Neography::Node.load(d, @neo)
p= Neography::Rest.new.create_node("name" => "#{id}")
Neography::Rest.new.add_label(p, "LabelSample")
d=Neography::Rest.new.get_node(d)
Neography::Rest.new.create_relationship("belongs_to", p, d)
그래서입니다 : 구문 분석 된 데이터와 동일한 "이름"필드 노드에 대한 이미 채워 DB에서 검색 이 데이터에 대한 새 노드를 만들고 마지막으로 두 노드 간의 관계를 만듭니다. 분명히이 코드는 실행에 너무 많은 시간이 걸립니다. 그래서 Neography의 일괄 처리를 시도했지만 몇 가지 문제가 발생했습니다.
p = Neography::Rest.new.batch [:create_node, {"name" => "#{id}"}]
가 나에게 "`분할 정의되지 않은 메서드했다. '전무을 위해 : NilClass을".
ID [ "자기"]에서 분할 ('/ ') 마지막
d=Neography::Rest.new.batch [:get_node, d]
나를 준다 get_node에 대한 Neography :: UnknownBatchOptionException
나는 이것이 충분한 시간을 절약 할 지 확신하지 못한다.
예를 들어, Batch Import을 사용하여 여러 가지 방법을 시도했지만 이미 db에서 필요한 노드를 만들 수있는 방법을 찾을 수 없습니다. 알다시피, 나는 이것에 대해 좀 익숙해 져서 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.
감사합니다. Brian, 시도해 봤지만 성능은 눈에 띄게 좋았지 만 여전히 약 25 분이 걸립니다. 내 8을 처리하기 위해 "내 80 분이 지났어. 나는 내 코드에서 포기했다."). 0k 행의 긴 샘플 데이터 세트. 더 이상 성능을 향상시킬 수있는 방법이 있습니까? – AGarofoli
@AGarofoli 동일한 쿼리를 반복해서 수행하는 경우 params에서 큰 성능 향상을 얻을 수 있습니다. http://neo4j.com/docs/stable/cypher-parameters.html을 확인하고 '{ 이름 : n.name}'을 (를) 매개 변수와 함께 사용하십시오. 또한 모든 X 항목을 닫는 트랜잭션에서 업데이트 청크를 수행 할 수도 있습니다. 네가 네오 그래피로 어떻게할지는 모르겠지만, 조금 더 힘을 줄거야. – subvertallchris