将数据从Neo4j迁移到SQL

将数据从Neo4j迁移到SQL,neo4j,data-migration,Neo4j,Data Migration,您好,我在应用程序中使用neo4j,我的结构如下: 我正在使用嵌入式图形API 我有几个数据库,我指的是使用我在应用程序中维护的池eg->db1、db2、db3。。。。。db100 当我想访问一个特定的数据库时,我使用新的EmbeddedGraphDatabase(“db(n)的路径)”指向它。 问题是,当连接池计数增加时,应用程序所消耗的RAM大小将持续增加,并且会在某个限制点使应用程序崩溃 因此,我正在考虑从Neo4j迁移到其他数据库 此外,我的数据库中只有一小部分使用了图形结构 迁移的一种

您好,我在应用程序中使用neo4j,我的结构如下:

  • 我正在使用嵌入式图形API
  • 我有几个数据库,我指的是使用我在应用程序中维护的池eg->db1、db2、db3。。。。。db100
  • 当我想访问一个特定的数据库时,我使用新的EmbeddedGraphDatabase(“db(n)的路径)”指向它。
  • 问题是,当连接池计数增加时,应用程序所消耗的RAM大小将持续增加,并且会在某个限制点使应用程序崩溃
  • 因此,我正在考虑从Neo4j迁移到其他数据库
  • 此外,我的数据库中只有一小部分使用了图形结构
  • 迁移的一种方法是为其编写脚本。还有更好的选择吗?

    我的另一个问题是,为了维护我的结构,什么是最好的数据库。

    我考虑的另一个观点是,我可以将一部分数据保存到Neo4j中,并将另一部分转移到其他数据库中。

    如果有什么不清楚的地方,我可以澄清


    提前感谢。

    嵌入式GraphDatabase实例并不等同于SQL中的“连接”。它的设计可以运行很长时间(天、月)。因此,启动/停止成本高昂


    在同一JVM中拥有数百个独立数据库的用例是什么?

    由于graphdb设计用于在单个主机上保存整个数据模型,因此许多小型数据库的性能会很差

    您是否为每个数据库运行一个JVM

    您可以通过为内存映射提供正确的属性来控制neo4j使用的内存量,还可以使用neo4j enterprise的gcr缓存并控制缓存大小属性变量


    我认为将图形部分保留在Neo4j中,而只移动非图形部分仍然是有意义的。

    尝试通过graphML导出/导入gremling xml。我用这个和一些编程将SQL数据导入neo4j。这里有一个导入链接,但我相信你可以在小精灵手册中找到导出命令:介意我处理#4吗?RAM大小的增加很可能与Neo4j创建的缓存有关。如果不希望RAM大小增加,您是否尝试过在neo4j.properties中关闭缓存?@Nicholas-但这会降低性能。。。对吗?嗨,马蒂亚斯,谢谢你的回答。我知道EmbeddedGraphDatabase实例被设计为运行更长的时间,这只是失败的原因。用例就像我们为每个客户维护一个单独的层次结构(一种银行),但是结构在设计上更加清晰。此外,每个客户机都可以维护自己的层次结构。是否所有客户机都可以位于同一个数据库中,并且每个客户机都有各自的根节点?但索引将是全局的。。。但他们的结果可以根据客户进行筛选。是的,这是可以做到的,但仍然需要对近1000个客户进行大量重组和数据迁移:(…所以实际上没有迁移那么乏味嗨,Michael,谢谢你的回答。我使用了一个JVM实例来实例化所有我有一个节约层的数据库。