Neo4j 中时间过滤器的性能,其中
performance of time filters in neo4j where
所以这是一道neo4j图数据库设计题。在日期 属性 上有一个相对高效的 where 过滤器,或者我应该开始创建节点和关系来帮助过滤它。
例如,使用neo4j电影图示例。
MATCH (nineties:Movie) WHERE nineties.released > 1990
AND nineties.released < 2000 RETURN nineties.title
如果有数百万部电影,此查询是否会执行类似于 table 扫描所有电影然后过滤的操作 - 在 Movie.released 上创建索引是否可以避免那个?
或者每个十年都有一个节点更好,比如六十年代、七十年代、八十年代等等...并将每部电影与该节点关联起来在查询方面更有效?
如果它是一个更动态的时间查询,比如最近 7 天上映的电影,会怎样 - 只在上映时创建索引并添加 where 子句就足够了吗?或者这种方法有缺陷吗?
用<和>查找节点属性不是"performant",我的意思是遍历关系更快
事实上,在 Neo4j 中管理时间是一个常见的用例,您需要转变思维。
通常我们使用时间树和事件,或者在您的用例中,电影会有一个关系 RELEASED_IN 连接到时间树的 1990 年节点。
您可能需要查看 GraphAware TimeTree Neo4j 插件,它可以在后台处理此问题:
所以这是一道neo4j图数据库设计题。在日期 属性 上有一个相对高效的 where 过滤器,或者我应该开始创建节点和关系来帮助过滤它。
例如,使用neo4j电影图示例。
MATCH (nineties:Movie) WHERE nineties.released > 1990
AND nineties.released < 2000 RETURN nineties.title
如果有数百万部电影,此查询是否会执行类似于 table 扫描所有电影然后过滤的操作 - 在 Movie.released 上创建索引是否可以避免那个?
或者每个十年都有一个节点更好,比如六十年代、七十年代、八十年代等等...并将每部电影与该节点关联起来在查询方面更有效?
如果它是一个更动态的时间查询,比如最近 7 天上映的电影,会怎样 - 只在上映时创建索引并添加 where 子句就足够了吗?或者这种方法有缺陷吗?
用<和>查找节点属性不是"performant",我的意思是遍历关系更快
事实上,在 Neo4j 中管理时间是一个常见的用例,您需要转变思维。
通常我们使用时间树和事件,或者在您的用例中,电影会有一个关系 RELEASED_IN 连接到时间树的 1990 年节点。
您可能需要查看 GraphAware TimeTree Neo4j 插件,它可以在后台处理此问题: