Neo4j:创建类型1和类型2的各种节点将这两种类型的节点与2种不同的关系联系起来

时间:2013-05-31 11:52:44

标签: java neo4j batch-processing

我正在使用Neo4j存储数据。

我有两种类型的GDP和健康数据。每个数据都有一组国家(比如大约20个)和一组年份(比如1990-2013)。现在我想将每个国家/地区存储为唯一的节点,标签为国家/地区名称,每年作为唯一节点,标签为年份。国家和年份通过上述GDP与健康的关系相互关联(映射)。

我已经在2个不同的SortedSet(java代码)中收集了国家名称和年份。

我不确定是否最好将每个国家/地区和年份逐个添加为graphDB.createNode(),因为我认为创建然后定义关系或者它是否最好是太麻烦批量插入所有这些国家,同时批量插入多年。但是,当我批量插入所有国家和年份时,我将如何定义它们之间的两种关系。

我想如果某人有一段java代码或提供有关找到最佳数据存储解决方案的建议。

我必须指出,并非所有国家/地区都有每年任何特定关系的数据。

谢谢, 淡褐色

2 个答案:

答案 0 :(得分:0)

我在某种程度上遇到过这种情况。我有一些不同类型的节点

  

x,y,z

并且x与它对应的y或z之间存在关系。我只是使用BatchInserter来插入所有类型的所有节点,之后我通过查找必须连接的节点的id来获取节点之间的关系以获得节点之间的关系。

所以,我认为你可以通过循环遍历你所拥有的两个集来插入YEARS和COUNTRIES的所有节点,之后你可能需要一个查询或其他任何东西来获得这些节点之间的关系。

答案 1 :(得分:0)

请参阅here以获取将数据导入Neo4j的指南和here以获取其他工具(您可以“批量插入”节点和关系,不确定您的犹豫是什么)。

我不知道'笨重'是什么意思。如果使用上面的批处理工具,则可以先执行所有节点,然后执行所有关系,但如果使用Java嵌入式API,则无需执行此操作。如果你担心重复,f.i。在迭代SortedSet然后再次作为关系的“对象”或结束节点时,首先将节点作为“主题”来到节点的情况下,您可以查看UniqueFactory 。它允许您按照方便的顺序构建图形,而不必担心创建重复节点 - 只需创建每个节点,其关系的远程节点以及它们之间的关系。如果节点已存在,则将更新,而不是重复。这可能是最简单的方法,试一试再问一次,如果你遇到麻烦,可以再多一点。