neo4j를 평가 중입니다. 다른 dbs와 비교할 임의의 데이터를 만들었습니다. 데이터는 10k, 100k 및 1m 노드가있는 트리 구조를 나타냅니다. 계층 구조 유형과 연결 목록과 같은 연결 체인 관계의 두 가지 관계 유형이 있습니다.neo4j에서 500k 노드와 1m 관계를 포함하는 하위 트리를 복사하십시오.
테스트하려는 작업 중 하나는 하위 트리의 복사본을 만드는 것입니다. 이 작업은 세 단계 (노드 복사, 관계 복사, 대상에 연결)로 수행됩니다. 이 작업은 10k 및 100k 트리에서 정상적으로 작동합니다. 그러나 500k의 사본 트리가있는 가장 큰 예는 neo4j가 결코 돌아 오지 않습니다.
브라우저에 다시 연결되고 아무 반응이 없음을 보여줍니다. 나는 500k 노드가 그렇게 많이해서는 안된다고 생각한다. cvs 파일의 테스트 데이터는 약 300MB입니다.
내가 뭘 잘못하고 있니?
1 : 복사 노드
는match (r {`domain key` : 'unit-B2'})-[:isPredecessorOf*0..]->(n:`T-Base`)
with n as map create (copy:`T-Base`)
set copy = map, copy.`domain key` = map.`domain key` + '-copy'
with map, copy
create (copy)-[:isCopyOf]->(map)
2 : 관계를
match (s {`domain key` : 'unit-B2'})-[:isPredecessorOf*0..]->(n)
with collect(n) as st, s
match (s)-[:isPredecessorOf*0..]->(t)-[r:`isPredecessorOf`]->(x)
where x in st
with startNode(r) as s, endNode(r) as d
match (s)<-[:isCopyOf]-(source), (d)<-[:isCopyOf]-(dest)
with source, dest
create (source)-[:isPredecessorOf]->(dest)
match (s {`domain key` : 'unit-B2'})-[:isPredecessorOf*0..]->(n)
with collect(n) as st, s
match (s)-[:isPredecessorOf*0..]->(t)-[r:`isConnectedTo`]->(x)
where x in st
with startNode(r) as s, endNode(r) as d
match (s)<-[:isCopyOf]-(source), (d)<-[:isCopyOf]-(dest)
with source, dest
create (source)-[:isConnectedTo]->(dest)
3 복사 : 당신이 Neo4j를 실행하려면 어떻게 노드를
match (source{`domain key`:'unit-B1'}), (dest{`domain key`:'unit-B2-copy'})
create (source)-[:isPredecessorOf]->(dest)
Neo4j를 어떻게 실행합니까? 트랜잭션 메모리의 메모리 구성 문제 일뿐입니다. –
Windows 서비스로 실행됩니다. 서버의 메모리는 18GB입니다. dbms.memory.heap.initial_size = 10g dbms.memory.heap.max_size = 10g dbms.memory.pagecache.size = 6g – Jacek