0

我们有以下场景: - 有多达 100 万个 User 对象 - 有不同种类的 Car 对象(假设有来自 Mercedes、Ferrari、Porsche、BMW 的汽车),也有多达 100 万个对象

使用图形数据库,我可以很容易地为用户 A 喜欢汽车 B 建模,并且我可以非常有效地找到用户 A 喜欢的汽车。

但是,如何有效地找到所有用户节点?我见过很酷的 Neo4j 2.0 Schema Types,但目前我必须使用 Neo4j 1.8。我是否必须使用像“nodeProperty”这样的属性,用户的值 =user,汽车的值 =car 确实可以找到它们?那效率高吗?

以及如何有效地搜索来自特定年份并具有特定颜色的汽车?(假设 Car 对象可能具有此属性)我是否必须遍历所有 Cars 并寻找它?或者是 Neo4j 的想法,即我创建一个显示所有年份的超级节点,并将所有汽车连接到相应的年份节点?

4

1 回答 1

1

您可以索引每个用户的某些属性,例如 userId 以轻松找到所有用户节点(http://docs.neo4j.org/chunked/stable/indexing.html

对于汽车,您是否只想搜索特定年份和颜色的汽车?或者你想用这些来做更详细的查询?

如果您只想直接搜索,那么您也可以考虑那里的索引。否则,年份节点甚至颜色节点将是我这样做的方式。请注意,您可以同时使用索引(年份和颜色的索引)以及年份/颜色节点。在您进行更多涉及的查询之前,该索引可能有助于找到一组起始节点。如果颜色在这些查询中很重要,那么让汽车与颜色相关会比颜色作为汽车上的属性要好得多(因为必须经常检查属性,这比遍历关系不太理想)。与所有建模查询一样,取决于您希望如何处理数据。希望有帮助。

于 2013-07-02T13:17:27.867 回答