将数据导入Neo4J数据库最强大的方法是什么



我有150个Mysql表,大约3M行,目前每行只有200多列(数量只会增加(,我想将我的表转移到单个Neo4J数据库中,每个字段都是一个节点,因此,对于上面的数字,它将是:

  • 150=>表的数量
  • 3M=>行数
  • 200=>字段数
  • 10=>平均每个字段中可能的值的数量

so(150*3000000(+(200*10(=大约450’002'000个节点

哪种方法最适合导入这么多节点和关系?知道有6个特定节点用作唯一标识符,因此必须合并以避免重复。

我认为MATCH非常重,所以我认为应该尽可能避免,你认为除了询问Neo4J(例如MongoDB(以避免MATCH之外,使用一种方法来知道节点是否存在会有用吗?这是一个好主意吗?

提前谢谢。

在大多数导入数据的场景中,您使用MERGE而不是MATCH,这允许您创建和重用唯一实体。在开始导入之前,请确保CONSTRAINTS设置正确。这是开始阅读的好地方。

对于将要导入的行数,您可能会考虑apoc.periodic.iterate。它会批量加载,如果存在短时间锁定,则会重试。此外,还要考虑事务日志中可能累积的垃圾(以gB数量为单位(。我在配置文件中添加了几行以保持它的干净:

dbms.checkpoint.interval.time=30s
dbms.checkpoint.interval.tx=1
dbms.tx_log.rotation.retention_policy=false
dbms.tx_log.rotation.size=1M
dbms.transaction.timeout=30m

正如Graphileon提到的,确保在加载之前对节点和关系进行索引;否则加载时间会很长。此外,请记住,即使使用MERGE,属性的任何更改都会创建重复项。

相关内容

  • 没有找到相关文章

最新更新