title: Monitoring real-time changes to results of a neo4j query?
body: <p>I have an incoming event stream of player interactions from an MMO. I want to construct a graph of the player's moment-to-moment interactions, continuously run queries on the activities of the past ~30-240 seconds, and update a graphical view, all in real-time. </p>
  
  <hr>
  
  <p>Some more details about my particular case:</p>
  
  <ul>
  <li><p>I have ~100-500 incoming events every second. These look like:</p>
  
  <p>(PlayerA)->[:TAKES_ACTION]->(Event)->[:RECIPIENT]->(PlayerB)</p></li>
  </ul>
  
  <p>where every event is time-stamped. Timestamps are accurate to the second. I plan on attaching every event to a node representing a timestamp, so I can restrict queries to the events attached to a set of X most recent timestamps. </p>
  
  <ul>
  <li><p>I expect at any given time-frame for there to be ~1000-2000 active players. </p></li>
  <li><p>My queries will be to group players together based on mutual interactions, to figure out which groups are currently engaged in combat with which other groups.</p></li>
  </ul>
  
  <hr>
  
  <h1>My main questions are:</h1>
  
  <ul>
  <li><p>Does Neo4j have any sort of "incremental update" functionality to efficiently update query results without re-running the entire query for every set of changes?</p></li>
  <li><p>Does Neo4j have any sort of ability to "push" any changes to the results of a query to a client? Or would a client have to continuously poll the database?</p></li>
  <li><p>Are there any optimisations or tricks to making a continuously repeated query as efficient as possible?</p></li>
  </ul>