我们有以下情况: - 有用户对象,最多100万 - 有不同种类的汽车对象(假设有梅赛德斯,法拉利,保时捷,宝马的汽车),也有多达100万件物品
使用图形数据库,我可以非常轻松地建模用户A喜欢Car B,我可以非常有效地找到用户A喜欢的汽车。
但是,如何有效地查找所有用户节点?我见过很酷的Neo4j 2.0 Schema Types,但是目前我必须使用Neo4j 1.8。 我是否必须使用像“nodeProperty”这样的属性,对于用户使用value = user,而为汽车找到它们的值= car?这有效吗?
我如何才能有效地运行某一年的汽车搜索并具有一定的颜色? (假设Car对象可能具有此属性)我是否必须迭代所有汽车并寻找它?或者是Neo4j的想法,我创建了一个出现所有年份的超级节点,并将所有汽车连接到相应的年份节点?
答案 0 :(得分:1)
您可以索引每个用户的某些属性,例如userId,以便轻松找到所有用户节点(http://docs.neo4j.org/chunked/stable/indexing.html)
对于汽车,您是否只想搜索特定年份和颜色的汽车?或者您想使用它们进行更详细的查询?
如果你只是想直接搜索,那么你也可以考虑那里的索引。否则年份节点甚至颜色节点将是我的方式。 请注意,您既可以使用索引(年份和颜色的索引),也可以使用年/颜色节点。在进行更多涉及查询之前,索引可能有助于查找一组起始节点。如果颜色在这些查询中很重要,那么使汽车与颜色相关将比作为汽车上的属性的颜色好得多(因为必须经常检查属性,这比遍历关系更不可取)。 与所有建模查询一样,取决于您希望如何处理数据。希望有所帮助。