5 ms·
So what is an easy algorithm then? Keep in mind, "newest update wins" doesn't even begin to cover all possible use cases.
by pka 11y ago
So what is an easy algorithm then? Keep in mind, "newest update wins" doesn't even begin to cover all possible use cases.
- sebak 11y agoActually, for most use cases, newest update wins is sufficient if it can be done on a fine granular basis (one property of an object/document). It's what web applications have been doing for forever and being a 'realtime' framework doesn't change this if your use case isn't something like google docs.
- d0m 11y agoEasiest way I found is to use an "append-only" mentality to avoid conflict entirely. So, to take the vote example, using: [ {ts: <upvoted_time>, author: <id_of_author>. action: 'up'}, {ts: <upvoted_time>, author: <id_of_author>, action: 'down'}, {ts: <upvoted_time>, author: <id_of_author>, action: 'up'} ] You can sync from the server the changes after a certain timestamp, and the client can calculate the accurate value.
- espadrine 11y agoThat common approach is both elegant and tricky. It requires very precise clocks and time synchronization, as some non-commutative operations are order-dependent (such as list insertion). That is why Google's TrueTime API (introduced in Spanner[0]) is such a big deal. [0]: http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/archive/spanner-osdi2012.pdf http://static.googleusercontent.com/external_content/untrust...