我们有以下场景:-有用户对象,多达100万个-有不同类型的汽车对象(假设有梅赛德斯、法拉利、保时捷、宝马的汽车),也有多达100万个对象
有了图形数据库,我可以非常容易地建模用户A喜欢汽车B,并且我可以非常有效地找到用户A喜欢的汽车。
但是,如何有效地找到所有用户节点?我见过很酷的Neo4j 2.0模式类型,但目前我只能使用Neo4j 1.8。我是否必须使用像"nodeProperty“这样的属性,对用户使用值=user,对找到他们的汽车使用值=car?这是有效的吗?
我如何才能有效地搜索来自特定年份和具有特定颜色的汽车?(假设Car对象可能具有此属性)我是否必须遍历所有汽车并查找该属性?或者,Neo4j的想法是创建一个包含所有年份的超级节点,并将所有汽车连接到相应的年份节点?
发布于 2013-07-02 21:17:28
您可以为每个用户的一些属性(如userId )建立索引,以便轻松地查找所有用户节点(http://docs.neo4j.org/chunked/stable/indexing.html)
对于汽车,您是否简单地希望搜索特定年份和颜色的汽车?或者你想用它们来做更详细的查询?
如果你只是想要一个直接的搜索,那么你可以考虑那里的索引。否则,我将使用year节点,甚至可能是颜色节点。请注意,您既可以使用索引(年份和颜色的索引),也可以使用年份/颜色节点。该索引可能有助于在执行更多相关查询之前找到一组起始节点。如果颜色在这些查询中很重要,那么将汽车与颜色关联起来将比将颜色作为汽车上的属性要好得多(因为必须频繁检查该属性,这比遍历关系更不可取)。与所有建模查询一样,这取决于您希望如何处理数据。希望这能有所帮助。
https://stackoverflow.com/questions/17426243
复制相似问题