neo4j版本
使用3.5.3
unwind
测试使用jdbc批量插入的形式,驱动使用bolt协议,测试发现使用http协议数据库服务端直接承受不了负载不响应请求。
load csv
load csv 可以定时提交数据到neo4j,使用语法using periodic commit 10000,这种方式写是很方便的,但是有个问题,比如我们的导入的数据是一个点很多关系的,那我们肯定希望点不能重复,那我们需要使用merge语法来写数据,因为merge = match + create,所以我们需要对点建立索引(neo4j不支持边建立索引),这样才能更快的写数据,为了保证点不重复,我们需要建立唯一约束,如CREATE CONSTRAINT ON (n:node) ASSERT n.obj_id IS UNIQUE,这样我们对点就建立了标签为node的索引,这样导入数据是不是就万事大吉了呢,肯定不是,这时我们可能会遇到eager问题,何为eager?,eager行为代表捞所有数据到内存,会使得load csv中添加的定期提交语句using periodic commit 10000失效,在大量数据载入时出现fullGC,同时可能出现死锁。如何测试cypher语句是否还有eager行为呢,可以使用cypher profile,如:
cypher profile load csv with headers from 'file:///245' as line with line limit 0
merge (