数据以300-500 TPS的速率连续进入系统。我需要使用以下方案将其导入neo4j:
使用REST批处理似乎无法解决问题。 不同的密码查询太长,因为它们会产生许多小事务。
Gremlin工作得更快。我在数组中收集gremlin脚本的参数并作为批处理执行。但即使我很难达到300 TPS的速度。
我应该提一下,除了会有一个查询流~500 TPS:
START N=node(...) MATCH N-[rel:rel_type]->X return rel.weight,X.name;
堆大小设置为5 Gb。其他选项:
-XX:MaxPermSize=1G -XX:+CMSClassUnloadingEnabled -XX:+UseParallelGC -XX:+UseNUMA
导入此类数据的最佳方式和配置是什么?
答案 0 :(得分:3)
要检查传入节点是否存在并且是否具有其他节点的rel,您可以使用create unique syntax。
START n=node:node_index(newNode={N})
CREATE UNIQUE n-[:REL_TYPE]->x ;
自动增加关系的权重,我会假设这样的事情(但对此没有保证,可能有更快的方法):
START n=node:node_index(newNode={N})
CREATE UNIQUE n-[rel:REL_TYPE]->x
SET rel.weight = coalesce(rel.weight?,0) +1