This is great Gajus Kuizinas. Thanks for writing it up. Regarding materialized views, we’re doing something a little bit different and I don’t remember seeing this approach in your post. We don’t use PostgreSQL’s materialized view — rather, it is a table that we maintain ourselves. We look at the `updated_at` column of the base table. We run refresh every 10mins and only update rows that have been modified in last 10 mins. Have you attempted something like this? I plan on writing this up soon.