Orientdb : 2.1.3
Pyorient : 1.4.7
我需要通过pyorient将带有十万个顶点和五十万个边的图导入Orientdb。
首先,我只使用db.command(“创建顶点V set a = 1”)逐个插入所有顶点和边。
但这需要我两个小时左右。
所以我想找到一种方法来优化这个过程。
然后我发现Orientdb支持 Massive Insert ,但不幸的是,问题here中的pyorient的作者提到了
在bynary协议中(当然在pyorient中)没有大量的插入意图。
Pyorient支持massive insertion: no transacations? 。也许这是一个机会!
我只是将所有插入命令放在一起并通过db.batch()运行它。
我拍摄了一个包含5000个顶点和20000个边缘的图表,例如
sql batch
vertexs : 25.1708816278 s
edges : 254.248636227 s
原创
constrct vertexs : 19.5094766904 s
construct edges : 147.627924276 s
..似乎sql批处理花费的时间要多得多。
所以我想知道是否有办法做到这一点。
感谢。
答案 0 :(得分:0)
当您逐个输入时,您已经尝试过使用Transactional Graph获得更好的性能并提交每个X项目?通常这是插入大量数据的正确方法。不幸的是,使用pyorient,正如你也指出的那样,Massive Insert你不能使用它,而且多进程方法也无法利用(套接字连接只有一个,所有并发对象都将被序列化(如管道),因为驱动程序中未实现连接池。因此,您可以放弃多处理的性能优势)。