我在玩Neo4j,但是我想把我的头放在图的概念上。作为一个学习过程,我希望将一个小型Postgres关系数据库模式移植到Neo4j。有任何方法可以移植它并向Neo4j发出“等效的”关系查询吗?
发布于 2017-06-14 01:05:14
这个工具就是这么做的。将任何关系数据库导入neo4j https://github.com/jexp/neo4j-rdbms-import
发布于 2013-08-18 09:46:57
恐怕不行。关系数据模型和图形数据模型是两种不同的建模方法。它需要人脑(至少在2013年)才能理解这个领域,才能对其进行建模。
我建议你拿一张纸,用圆圈和箭头捕捉,你的实体是什么(节点)以及它们如何相互联系(关系)。然后,看看那张纸。瞧,你的新Neo4j数据模型。
然后,接受一个您想要得到回答的查询,并试图找出在没有计算机的情况下您将如何做到这一点,只需在那张纸上用手指跟踪节点和关系。一旦你明白了这一点,就把你所做的事情转化成一个赛弗查询。
看看neo4j.org,有很多例子。
发布于 2013-08-18 11:27:59
是的,您可以将现有模式移植到图形数据库。请记住,这并不一定是数据的最佳模型,但它是一个起点。
它有多容易在很大程度上取决于现有模式的质量。
对应于实体关系图中的实体的表定义了节点的类型。在即将发布的neo4j 2.0中,您可以用实体的名称来标记它们,从而使查找变得更容易。在旧版本中,可以使用索引或手动标签属性。
假设最好的情况是,数据之间的所有关系都是使用外键建模的,那么节点之间的任何1:1关系都可以识别并移植。
对于表建模n:m关系,标识相应的节点并在它们之间添加直接关系。
因此,作为一个例子,假设表Author[id, name, publisher foreign key]、Publisher[id, name]、Book[id, title]和written_by[author foreign key, book foreign key]。
Author、Publisher和Book中的每一行都成为一个节点。Author节点都会得到一个由外键关系标识的发布者的关系。written_by中的每一行,在引用的Author节点和Book节点之间添加一个关系对于neo4j中的查询,我推荐赛弗,因为它具有表现力。查找某个作者的书籍的(2.0)查询如下所示:
MATCH (author:Author)-[:written_by]-(book:Book)
WHERE author.name='Hugh Laurie'
RETURN book.titlehttps://stackoverflow.com/questions/18296199
复制相似问题