* Queries are encoded into sql and matcher functions
* Whenever data is mutated a change set is emitted - eg similar to immer
* This change set is used to generate SQL UPDATE statements
* The change set is also sent to matcher functions, the matcher functions update the query results accordingly