But doing this in a classic database would be insanely expensive. It would basically mean re-running multi-MB complex joins over and over, anytime ~any row changes.
Worse, since every user has their own permissions, when a single row changes ALL users' queries must be recalculated.
Worse, since every user has their own permissions, when a single row changes ALL users' queries must be recalculated.
Comments
We took these same ideas and applied them to sync.
You do a query direct from the client. Zero answers the query and keeps it up to date efficiently.
But better, if you do another query that overlaps with the first, Zero reuses the already synced data to answer the new query ✨instantly✨.
https://bugs.rocicorp.dev/
We made our own Linear-style bug tracker with Zero as a dogfood, and have used it as our actual bug tracker for months.
There's some really cool stuff coming up feature-wise and from there we plan to go to beta over the summer.
Curious? Adventurous? Learn more at https://zerosync.dev.