监控 neo4j 查询结果的实时变化?

Monitoring real-time changes to results of a neo4j query?

我有一个来自 MMO 的玩家交互的传入事件流。我想构建玩家即时交互的图表,连续 运行 查询过去 ~30-240 秒的活动,并实时更新图形视图。


关于我的具体案例的更多细节:

每个事件都带有时间戳。时间戳精确到秒。我计划将每个事件附加到一个表示时间戳的节点,这样我就可以将查询限制为附加到一组 X 个最新时间戳的事件。


我的主要问题是:

答案

1) 不能。您只能执行查询并获得结果。

2) 不能。目前您只能发出客户端 -> 服务器请求。

3) 是的。

详情

让我们一探究竟。默认情况下,Neo4j 可以为您提供:

  • 休息 API
  • 交易密码 ednpoint
  • 遍历端点
  • 自定义插件
  • 自定义非托管扩展

在您的情况下,您应该实施 unmanaged extension。这是获得所需功能的最佳选择 - 自行开发。

有关扩展的更多信息:

在扩展中你可以做你想做的一切

  • 使用核心API高效查询最新数据
  • 为客户端和服务器之间的全双工通信通道创建 WebSocket 端点
  • 为format/represent您的数据正确实施任何附加逻辑

查询和性能

密码查询在第一次执行时被编译和缓存。之后 - 使用缓存的查询版本。而且查询本身的执行速度非常快。

建议:

  • 尽可能使用查询参数。这允许 Neo4j 有效地重用查询
  • 巧妙地编写查询。尽可能降低基数。
  • 考虑数据模型。当查询始终仅获取最新数据时,您可能可以以这种方式对数据进行建模。在你的情况下,关系 :LAST_EVENT:PREVIOUS_EVENT 等可能会有所帮助。