Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j社区版在数据存储(即记录数量)方面有什么限制?_Neo4j - Fatal编程技术网

neo4j社区版在数据存储(即记录数量)方面有什么限制?

neo4j社区版在数据存储(即记录数量)方面有什么限制?,neo4j,Neo4j,我正在尝试加载500000个节点,但查询未成功执行。有人能告诉我neo4j community edition数据库中节点数的限制吗 我正在运行这些查询 result=session.run(“”) 使用定期提交10000 从“加载带有标题的CSV”file:///relationships.csv“作为一排 合并(s:Start{ac:row.Start}) 在创建集合时,s.START=row.START 合并(e:End{en:row.End}) 在创建集合s.END=row.END时 F

我正在尝试加载500000个节点,但查询未成功执行。有人能告诉我neo4j community edition数据库中节点数的限制吗

我正在运行这些查询

result=session.run(“”)
使用定期提交10000
从“加载带有标题的CSV”file:///relationships.csv“作为一排
合并(s:Start{ac:row.Start})
在创建集合时,s.START=row.START
合并(e:End{en:row.End})
在创建集合s.END=row.END时
FOREACH(u)如果是row.TYPE,则在“PAID”时输入[1]否则[]结束|
合并-(已支付{cr:row.CREDIT}]->(e))
FOREACH(u)如果是row.TYPE,则为“未付”,然后为[1]else[]结束|
合并-[:未付{db:row.DEBIT}]->(e))
返回s.START作为索引,计数(e)作为连接
按连接顺序说明
""")

我不认为社区版在这方面比企业版更为有限,而且大多数限制已经被消除

无论如何,我可以轻松创建一百万个节点(在一个事务中):

运行了10次,我确实创建了1000万个节点:

neo4j-sh (?)$ match (n) return count(n);
+----------+
| count(n) |
+----------+
| 10000000 |
+----------+
1 row
3 ms
您的问题很可能与事务的大小有关:如果事务太大,可能会导致OutOfMemory错误,在此之前,由于所有的垃圾收集,可能会将实例拖慢到爬网状态。将节点创建拆分为较小的批,例如,如果使用
加载CSV
,则使用
定期提交


更新:

您的查询已经包括使用定期提交的
,并且从CSV文件中每行仅创建2个节点和1个关系,因此它很可能与查询本身的性能有关,而不是与事务的大小有关

您有
Start
节点,其中两个属性设置为CSV中相同的值(
ac
Start
),还有
End
节点,其中两个属性设置为相同的值(
en
End
)。用于合并的属性是否有唯一性约束?如果没有它,随着节点的创建,处理每一行将花费越来越长的时间,因为它需要用想要的标签扫描所有现有的节点(O(n^2)算法,这对于500K节点来说非常糟糕)

这可能是应用的主要改进

但是,您是否确实需要
合并
关系(而不是
创建
)?CSV包含所有
Start
End
节点之间当前信用关系的快照(在这种情况下,每对节点只有一个关系),或者它包含所有交易,并且没有真正的理由合并相同金额的交易


最后,您真的需要报告加载查询的排序、聚合结果吗?加载成功后,它需要更多内存,可以拆分为一个单独的查询。

我不认为社区版在这方面比企业版更有限,而且大多数限制都已被消除

无论如何,我可以轻松创建一百万个节点(在一个事务中):

运行了10次,我确实创建了1000万个节点:

neo4j-sh (?)$ match (n) return count(n);
+----------+
| count(n) |
+----------+
| 10000000 |
+----------+
1 row
3 ms
您的问题很可能与事务的大小有关:如果事务太大,可能会导致OutOfMemory错误,在此之前,由于所有的垃圾收集,可能会将实例拖慢到爬网状态。将节点创建拆分为较小的批,例如,如果使用
加载CSV
,则使用
定期提交


更新:

您的查询已经包括使用定期提交的
,并且从CSV文件中每行仅创建2个节点和1个关系,因此它很可能与查询本身的性能有关,而不是与事务的大小有关

您有
Start
节点,其中两个属性设置为CSV中相同的值(
ac
Start
),还有
End
节点,其中两个属性设置为相同的值(
en
End
)。用于合并的属性是否有唯一性约束?如果没有它,随着节点的创建,处理每一行将花费越来越长的时间,因为它需要用想要的标签扫描所有现有的节点(O(n^2)算法,这对于500K节点来说非常糟糕)

这可能是应用的主要改进

但是,您是否确实需要
合并
关系(而不是
创建
)?CSV包含所有
Start
End
节点之间当前信用关系的快照(在这种情况下,每对节点只有一个关系),或者它包含所有交易,并且没有真正的理由合并相同金额的交易


最后,您真的需要报告加载查询的排序、聚合结果吗?加载成功后,它需要更多内存,可以拆分为单独的查询。

您正在执行什么查询?可能有助于编辑您的问题以显示它。AFAIK没有节点限制(即使使用较旧的版本,社区和企业之间的节点限制也没有差异)。您正在执行什么查询?可能有助于编辑您的问题以显示它。AFAIK没有节点限制(即使使用较旧的版本,社区和企业之间的节点限制也没有差异)。您好,我正在运行这些查询,结果=会话。运行(““”使用定期提交10000加载CSV,其中头来自”file:///relationships.csv“在创建集s.Start=row.Start merge(e:End{en:row.End})上作为行合并(s:Start{ac:row.Start})在创建集合时,s.END=row.END FOREACH(u在CASE row.TYPE中为“PAID”,然后[1]else[]END | MERGE(s)-[:PAID{cr:row.CREDIT}]->(e))FOREACH(u在CASE row.TYPE中为“UNPAID”,然后[1]else[]END | MERGE(s)-[:UNPAID{db:row.DEBIT}>)-(e))返回s.START作为索引,计数(e)作为连接
CREATE CONSTRAINT ON (n:Start) ASSERT n.ac IS UNIQUE;
CREATE CONSTRAINT ON (n:End) ASSERT n.en IS UNIQUE;