2013-05-31 60 views
0

我正在使用Neo4j来存储数据。Neo4j:创建类型1和类型2的各种节点将这两种类型的节点与两种不同的关系相关联

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

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

我不确定是否最好将每个国家和每个年份逐一添加为graphDB.createNode(),因为我认为创建并定义关系太麻烦了,最好一次性批量插入所有这些国家,同时批量插入一年。但是,当我批量插入所有国家和年份时,我将如何定义它们之间的2个关系。

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

我必须指出,并非所有国家都有每年给定关系的数据。

谢谢, 浅褐色

回答

0

我已经面临这样的情况下在一定extent..I有不同类型的

X,Y,Z

的一些节点和有x与它对应的y或z之间的关系。我只是使用BatchInserter插入所有类型的所有节点,然后通过查找必须连接的节点的ID来进行一些sql查询以获取节点之间的关系。

所以,我认为你可以插入所有的节点为国家和国家,通过循环你有两套,然后你可能需要一个查询或任何其他获得这些节点之间的关系。

0

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

我不知道你的意思是'累赘'。如果你使用上面的批处理工具,你可以先完成所有的节点,然后再完成所有的关系,但是如果你使用Java嵌入式API,则不需要这样做。如果你担心重复,f.i.当您迭代您的SortedSet,然后再次作为关系的“对象”或结束节点时,您首先作为“主题”出现在节点上,您可以查看UniqueFactory。它将允许您按照便捷的顺序构建您的图形,而无需担心创建重复节点 - 只需创建每个节点,其关系的远程节点以及这些节点之间的关系即可。如果节点已经存在,它们将被更新,而不是重复。这可能是最直接的方式,如果遇到问题,可以尝试再试一次,更具体一点。