3 ms·
There’s a col_version column in a clock table used for last-write-wins. In case a tie, the “biggest” value wins.
by jeromegn 3y ago
There’s a col_version column in a clock table used for last-write-wins. In case a tie, the “biggest” value wins.
- eternityforest 3y agoOh 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 3y agoWe’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 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.