neo4jを評価しています。他のDBと比較するためにランダムなデータを作成しました。データは、10k、100k、および1mノードのツリー構造を表します。階層型とリンクされたリストのような接続チェーン関係の2つの関係タイプがあります。neo4jで500kノードと1mリレーションを含むサブツリーのコピーを作成します。
私がテストしたい操作の1つは、サブツリーのコピーを作成することです。この操作は、3つのステップ(ノードのコピー、コピー関係、ターゲットへの接続)で実行されます。この操作は、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:ノード
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