neo4j导入数据的不同方式比较

本文转自这里,更多内容请点击原文查看

参考:https://my.oschina.net/zlb1992/blog/918243

https://blog.csdn.net/weixin_37947156/article/details/77442926

官方文档:https://neo4j.com/blog/loading-sql-neo4j-like-magic/

https://neo4j.com/developer/guide-importing-data-and-etl/

常见数据导入方式概览

 

(1) Cypher create 语句,为每一条数据写一个create

(2) Cypher load csv 语句,将数据转成CSV格式,通过LOAD CSV读取数据。

(3) 官方提供的neo4j-import工具,未来将被neo4j-adminimport代替

(4) 官方提供的Java API    BatchInserter

(5) 大牛编写的 batch-import 工具

(6) neo4j-apocload.csv +apoc.load.relationship

(7) 针对实际业务场景,定制化开发

 

这些工具有什么不同呢?速度如何?适用的场景分别是什么?

 

create语句

load csv语句

neo4j-import

BatchInster

batch-import

apoc

适用场景

 

 

初始化导入

增量更新

 

初始化导入

 

初始化导入

 

初始化导入

增量更新(有限制)

 

增量更新

导入速度

很慢1000/s

数k /s

数w/s

数w/s

数w/s

数k/s

实际测试

9.5k/s

(节点+关系)

12w/s

(节点+关系)

1w/s

(节点+关系)

1w/s

(节点+关系)

4k/s(1亿数据上增量更新) 1w/s(百万数据上增量更新)

优点

1.使用方便

2.可实时插入

1.官方ETL工具

2.可以加载本地/远程CSV

3.可实时插入

1.官方工具

2.占用资源少

1.官方API

1.可以增量更新

2.基于BatchInserter

1.官方ETL工具

2.可以增量更新

3.支持在线导入

4.支持动态传Label  RelationShip

缺点

1.速度慢

2.处理数据,拼CQL复杂

1.导入速度较慢

2.不能动态传Label  RelationShip

1.需要脱机导入 停止Neo4j数据库

2.只能用于初始化导入

1.需要脱机导入 停止Neo4j数据库

2.需要在JAVA环境中使用

 

1.需要脱机导入 停止Neo4j数据库

1.速度一般

 

注释:本次测试使用的id(不是Neo4j id)类型是String,为uuid,如果同一Label下数据不超过2^32,可以用int类型

 

结论

 

根据实际情况选用最好的方式

 

(1)  neo4j-import导入速度快,但是要求是空库,导入时要停止neo4j,也就是脱机导入,而且你要提前处理好数据,数据最好不要有重复,如果有重复,可以导入时跳过,然后根据bad.log来查看或者修正这部分数据

 

(2)  batch-import可以增量导入,但是要求导入时停止neo4j数据库(脱机导入),而且增量更新的数据不会和库里存在的数据对比,所以要求数据全是新的,否则会出现重复数据

 

(3)  load csv比较通用,而且可以在neo4j数据库运行时导入,但是导入速度相对较慢,要提前整理好数据,而且不能动态创建 Label RelationShip

 

(4) apoc挺好用的,可以动态创建Label、RelationShip,但是速度一般

 

结论2:

如果项目刚开始,想要将大量数据导入数据库,Neo4j-import是最好的选择。
如果数据库已经投入使用,并且可以容忍Neo4j关闭一段时间,那么Batch Import是最好的选择,当然如果你想自己实现,那么你应该选择Batch Inserter
如果数据库已经投入使用,且不能容忍Neo4j的临时关闭,那么LOAD CSV是最好的选择。
最后,如果只是想插入少量的数据,且不怎么在乎实时性,那么请直接看Cypher语言。
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值