Earlier quoted context omitted.
We use the concept of 'topics'. A topic encodes: 'The part of the index a query cares about'. For example, given a query like "fetch user where id = 1", there could be a topic like "users:id:1" [1] When a WAL record comes in, we find queries by their topics, and invalidate them. This triggers a refresh. This is inspired by Figma's LiveGraph [2], which in turn is inspired by Asana's Luna [3]. The essays cover the idea…
I worked on LiveGraph for a long time at Figma. We went through our own evolution: 1. first we would use the WAL records to invalidate queries that could be affected (with optimizations for fast matching) and requery the data 2. then we used the info from the WAL record to update the query in-memory without asking the DB for the new result, it worked for majority of the queries that can be reliably modeled outside of…
I'll reach out to you on twitter; would love to learn more about your experience