我有来自MMO的玩家互动的传入事件流。我想构建一个玩家即时交互的图表,持续运行过去~30-240秒的活动查询,并实时更新图形视图。
关于我的具体案例的更多细节:
我每秒有大约100-500个传入事件。这些看起来像:
(PlayerA) - > [:TAKES_ACTION] - GT;(比赛) - > [:RECIPIENT] - GT;(PlayerB)
每个事件都带有时间戳。时间戳精确到秒。我计划将每个事件附加到表示时间戳的节点,因此我可以将查询限制为附加到一组X个最新时间戳的事件。
我希望在任何给定的时间范围内,有大约1000-2000名活跃玩家。
我的疑问将是根据相互作用将玩家聚集在一起,以确定哪些团体目前正在与其他团体进行战斗。
Neo4j是否具有任何类型的“增量更新”功能,无需为每组更改重新运行整个查询,从而有效地更新查询结果?
Neo4j是否有能力将查询结果的任何更改“推送”到客户端?或者客户是否必须不断轮询数据库?
是否有任何优化或技巧可以使连续重复的查询尽可能高效?
答案 0 :(得分:2)
1)否。您只能执行查询并获得结果。
2)否。目前您只能制作客户 - >服务器请求。
3)是的。
让我们来看看这一个的底部。 Neo4j默认可以为您提供:
在您的情况下,您应该实施unmanaged extension。这是获得所需功能的最佳选择 - 自己开发。
有关扩展程序的更多信息:
在扩展程序中,您可以执行所有:
Cypher查询在首次执行时进行编译和缓存。之后 - 使用缓存查询版本。查询执行本身非常快。
建议:
:LAST_EVENT
,:PREVIOUS_EVENT
等可能有所帮助。