So for a system that is built on top of multiple database tables to load a single page/document how would you go about creating and storing a version history for all the related tables? Or would you use a non-db approach somehow?
There are a lot of ways to optimize this sort of thing in practice so it runs reasonably, but that's an exercise for the implementer.
This is something I've been thinking a lot about as well. A cool approach I've been experimenting with is using a CRDT for the underlying document data, and taking snapshots of the logical clock that correspond to version numbers. If you don't garbage-collect the CRDT, you can then restore the value based on the logical clock.
The CRDT itself can be persisted to S3 or similar, as in that article. We’ve been working on this in the open, so you can follow along: https://y-sweet.dev/