java - Neo4j - Java 堆空间。错误的查询或设置?

标签 java docker database-design neo4j cypher

我对 neo4j 有疑问。 我不知道是我的问题还是其他问题。


简介

我必须构建一个存储公共(public)汽车/火车路线的应用程序。 这是我的模式:

节点:

  • Organizaton:有路线/巴士等的公司。
  • 路线:巴士路线,例如:巴黎 - 柏林。
  • 车辆(在本例中为公共(public)汽车):具有唯一牌照的公共(public)汽车。
  • 停靠点: map 中带有经纬度的点。

重要关系:

  • NEXT:这是一段非常重要的关系。

NEXT 关系包含那些属性:

  • 开始时间
  • 开始分钟
  • 结束时间
  • session 结束
  • dayOfWeek(从 0 到 6 - 周日、周一等)
  • 车辆编号

enter image description here


问题

我的查询是:

MATCH (s1:Stop {id: {departureStopId}}), (s2:Stop {id: {arrivalStopId}})
OPTIONAL MATCH (s1)-[nexts:NEXT*]->(s2)
WHERE ALL(i in nexts WHERE toInt(i.dayOfWeek) = {dayOfWeek} AND toInt(i.startHour) >= {hour})
RETURN nexts
LIMIT 10

例如:我想找到 dayOfWeek 为星期日 (0) 且属性 startHour > 11 的所有下一个关系

之后,我通常会在我的 nodejs 后端上解析和验证最终对象。

这在我刚开始的时候有效..有 1k 关系.. 现在我有 10k 的关系,我的查询有超时问题或查询在 30 秒内解决..太多时间...... 我不知道如何解决这个问题。 我将 neo4j 与 docker 一起使用,我尝试阅读设置文档,但我不知道 Java 是如何工作的。

你们能帮帮我吗?


更新

谢谢大家! 现在我用“allShortestPaths”解决了问题,但我想我会重命名所有关系(如 Michael Hunger 所说)。

最佳答案

你试过吗:

MATCH p=allShortestPaths((s1:Stop {id: {departureStopId}})-[:NEXT*]-> (s2:Stop {id: {arrivalStopId}}) )
WHERE ALL(i in RELS(p) WHERE toInt(i.dayOfWeek) = {dayOfWeek} AND toInt(i.startHour) >= {hour})
RETURN rels(p) as nexts
LIMIT 10

这应该使用快速最短路径算法,因为:

Planning shortest paths in Cypher can lead to different query plans depending on the predicates that need to be evaluated. Internally, Neo4j will use a fast bidirectional breadth-first search algorithm if the predicates can be evaluated whilst searching for the path.

参见 https://neo4j.com/docs/developer-manual/current/cypher/execution-plans/shortestpath-planning/#_shortest_path_with_fast_algorithm了解更多详情。

关于java - Neo4j - Java 堆空间。错误的查询或设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43168152/

相关文章:

Docker 撰写 : Change COMPOSE_PROJECT_NAME without rebuilding the application

node.js - 如何在 dokku node.js 应用程序中运行 docker 命令?

mysql - 使非规范化模式保持最新的最佳实践?

cocoa - 核心数据中可以存在多对多关系吗?

java - 可以使用组合而不是继承来实现 Polymorphysim 吗? ( java 语)

java - 修改 JList 中两个元素之间的垂直间隙

redis - 使用 Docker 运行 Redis(性能问题)

mysql - 改进的表结构可查询季度支出数据

java - 3gp 到 wav 文件 Android

java - 带有外部 JAR 的 Spring Boot 获取 NoClassDefFoundError