top | item 37618587

(no title)

jeromegn | 2 years ago

There’s a col_version column in a clock table used for last-write-wins. In case a tie, the “biggest” value wins.

discuss

order

eternityforest|2 years ago

Oh nice. Looks like on closer inspection they're using Lamport Clocks, which track causation, but if ignore time, although time is mentioned somewhere as a possibility in hybrid systems someday, if I'm understanding it?

Looks like only a 2MB binary for the extension, so you could in theory just pack it with your app too.

I'm particularly interested because it seems like(For very small databases) you could use SyncThing as the sync backend by just periodically dumping your data to files(And making a new one once the file got too big).

I don't know how you could ever garbage collect the old files aside from some kind of manual "Delete everyone else's stuff and output your own big merged log" command, but it would be really cool to be able to make apps with P2P sync.

It also seems like you could put them in an http server and use it like an RSS feed. Or even serve them via torrents.

jeromegn|2 years ago

We’re using cr-sqlite as part of our distributed state propagation system. It is indeed easy to bundle in the app!

https://github.com/superfly/corrosion

It would be possible to distribute cr-sqlite changes in many different ways (like you said, http or torrents, etc.) since any change can be applied out of order.