neo4j 中的自引用节点
Self-referential nodes in neo4j
如果我们在neo4j中创建自引用节点可以吗?我需要在大数据环境中使用它,因此性能非常重要。
我找到了一个示例 here,但需要了解更多关于此的意见。一般哪个比较好?使用自引用节点或将它们分解为具有不同标签和关系的独立节点?
我的场景是创建电子商务标签组和标签。 A TAG_GROUP 有 TAGs ,这很清楚。然而,一些标签可能有子标签。所以可以有 2 个解决方案:
1) 要将 TAG-[has]-TAG 自引用标签与 {parentID,isSubTag,...} 等属性一起使用,这样做的好处是我可以使用多个子标签等级。但是我不确定性能如何。
2)使用TAH-[有]-SUB_TAG。好吧,也许这个更简单,更容易理解。但是如果 SUB_TAG 本身有一个 SUB_SUB 标签呢?
如有任何帮助,我们将不胜感激。
P.S.I 我将使用 neo4j 3.0.1 独立服务器和 Spring-Data-neo4j 4.1.1
在 SDN 的用例之外,您所描述的是一个层次结构,它绝对可以在 Neo4J 中自然地建模。
parent/child的概念只需要用关系来完成,不需要属性。
(Tag)-[:CHILD]->(Tag)-[:CHILD]->(Tag)
我假设您会有带有关联标签的产品,然后标签可以 tags
产品:
(Tag)-[:TAGS]->(Product)
查找产品的关联标签非常简单:
MATCH (product:Product {id: 1})
OPTIONAL MATCH (product)<-[:TAGS]-(tag)
RETURN product, collect(tags) as tag
可选匹配在不中断查询的情况下考虑了没有标签的产品
如果您想要每个标记产品的标记的完整标记层次结构
MATCH (product:Product {id: 1})
OPTIONAL MATCH (product)<-[:TAGS]-()<-[:CHILD*0..]-(tag)
RETURN product, collect(tag) as tags
这里的 0 考虑到标签没有父标签的情况,并将 ()
嵌入到 tags
集合中。
我建议您阅读以下有关建模和 Cypher 部分的内容,我相信有人可以为此添加 SDN 方面的答案。
http://graphaware.com/neo4j/2013/10/11/neo4j-bidirectional-relationships.html
如果我们在neo4j中创建自引用节点可以吗?我需要在大数据环境中使用它,因此性能非常重要。 我找到了一个示例 here,但需要了解更多关于此的意见。一般哪个比较好?使用自引用节点或将它们分解为具有不同标签和关系的独立节点? 我的场景是创建电子商务标签组和标签。 A TAG_GROUP 有 TAGs ,这很清楚。然而,一些标签可能有子标签。所以可以有 2 个解决方案:
1) 要将 TAG-[has]-TAG 自引用标签与 {parentID,isSubTag,...} 等属性一起使用,这样做的好处是我可以使用多个子标签等级。但是我不确定性能如何。
2)使用TAH-[有]-SUB_TAG。好吧,也许这个更简单,更容易理解。但是如果 SUB_TAG 本身有一个 SUB_SUB 标签呢?
如有任何帮助,我们将不胜感激。
P.S.I 我将使用 neo4j 3.0.1 独立服务器和 Spring-Data-neo4j 4.1.1
在 SDN 的用例之外,您所描述的是一个层次结构,它绝对可以在 Neo4J 中自然地建模。
parent/child的概念只需要用关系来完成,不需要属性。
(Tag)-[:CHILD]->(Tag)-[:CHILD]->(Tag)
我假设您会有带有关联标签的产品,然后标签可以 tags
产品:
(Tag)-[:TAGS]->(Product)
查找产品的关联标签非常简单:
MATCH (product:Product {id: 1})
OPTIONAL MATCH (product)<-[:TAGS]-(tag)
RETURN product, collect(tags) as tag
可选匹配在不中断查询的情况下考虑了没有标签的产品
如果您想要每个标记产品的标记的完整标记层次结构
MATCH (product:Product {id: 1})
OPTIONAL MATCH (product)<-[:TAGS]-()<-[:CHILD*0..]-(tag)
RETURN product, collect(tag) as tags
这里的 0 考虑到标签没有父标签的情况,并将 ()
嵌入到 tags
集合中。
我建议您阅读以下有关建模和 Cypher 部分的内容,我相信有人可以为此添加 SDN 方面的答案。
http://graphaware.com/neo4j/2013/10/11/neo4j-bidirectional-relationships.html