如何优化pyorient将具有十万个顶点和五十万个边的大图导入Orientdb的过程?

How to optimize the process of importing a large graph with one hundred thousand vertexes and half a million edges into Orientdb by pyorient?

Orientdb : 2.1.3
Pyorient : 1.4.7

我需要通过 pyorient 将具有十万个顶点和五十万个边的图导入 Orientdb。

db.command一一

首先,我只是使用db.command("create vertex V set a=1") 将所有的顶点和边一一插入。

但这需要我大约两个小时。

所以我想找到一种方法来优化这个过程。

大量插入 ?

然后我发现Orientdb支持Massive Insert,可惜pyorient的作者在一个issue中massive insertion: no transacations? 提到

in the bynary protocol ( and in pyorient of course ) there is not the massive insert intent.

SQL批量

Pyorient 支持 sql batch。也许这是一个机会!

我只是将所有插入命令放在一起,然后 运行 通过 db.batch()。

我以一个5000个顶点和20000条边的图为例

..似乎 sql 批处理花费了更多时间。

所以我想知道有没有办法做到。

谢谢。

当您逐一输入时,您已经尝试查看使用事务图是否获得更好的性能并提交每 X 个项目?通常这是插入大量数据的正确方法。不幸的是,正如您还指出的那样,使用 pyorient 时,您不能使用 Massive Insert,而且多进程方法也无法利用(套接字连接只有一个,所有并发对象都将被序列化(对于管道),因为连接池未在驱动程序中实现。因此您可以失去多处理的性能优势)。