2017-11-25 145 views
0

创建一个附加节点来保存额外的属性是一个好主意吗?例如:用户节点,用户数据节点。如果用户数据将有大量数据,是否有助于对仅涉及用户节点的查询进行内存优化?创建节点只是为了存储父节点的属性

或者,如果我们将所有的数据作为属性存储在父节点本身中,它会不会有什么区别?

+0

我不认为它有重大的不同。可能有多少物业我们在谈论? –

+1

这取决于你的很多问题! Neo4j将所有节点的属性存储为一个链。因此,要获得用户的所有道具,拥有“数据用户”节点会变得更糟(因为Neo4j需要遍历rel)。 – logisima

+0

@GaborSzarnyas现在有很少的属性(4-5)。但它可能会转移到500至600个属性。 –

回答

1

我认为你应该只使用Neo4j为图遍历+其他数据库管理系统在方便的层次结构(我的意思是基于文档的DBMS,如MongoDB)中存储你的600个属性。

从我的经验来看,与MongoDB相比,Neo4j在查找上并不是很快。 另外它的存储效率并不高。

600在每个节点中的扁平属性看起来像设计错误。

此外,您可以查看混合图形文档解决方案,如Arango或Orient。但我不确定他们的可靠性,因为我使用Mongo + Neo4j的项目。