▲ | quelltext 2 days ago | |||||||
Several things remain unclear: "The beauty of this scheme is that a node only has to know about its share of the interval" The article doesn't explain curve changes in much detail, but I assume it increases the portion of the curve "owned" by the node. With unique identifiers all a node needs to know its identifier. So that can't be what's interesting about these interval portions. Also: - How that curve is initially drawn isn't clear at all. Is it flat and becomes complex over time by forking (+ data modification)? - Why are interval boundaries real-value in a system that cannot actually express real numbers? - How are the intervals / portions decided? Is that simpler than generating UUIDs? - How does comparison work? "Comparison works similarly to Version Vectors: if the curve of a stamp is above the other one, it descends it, otherwise the curves intersect and the stamps are concurrent." But now you have events with curves and intervals where one event might miss a portion. It's not immediately clear what happens in that comparison. It's maybe obvious to some readers but clearly not an audience that needed introduction for the other things initially explained by the article. In terms of conclusions: My understanding is that the main benefit is that the overall complexity of the "vector" becomes simpler in light of actor explosion due to the merging mechanism. Whereas UUIDs (or even monotonous index indexed vectors) would grow indefinitely, making tracking them on events a challenge. This intro article fails to make this stuff clear. | ||||||||
▲ | catwell 2 days ago | parent | next [-] | |||||||
Hello, author here. Sorry about the lack of clarity, this article is the transcript of a 5 min lightning talk and it was really hard fitting all the relevant content in that little time :) (In retrospect that was a poorly chosen topic. When I picked it I thought the talk would be 10 min, 5 min is too short to explain a subject like this.) > How that curve is initially drawn isn't clear at all. Is it flat and becomes complex over time by forking (+ data modification)? Yes, the initial curve is typically constant 0. > Why are interval boundaries real-value in a system that cannot actually express real numbers? Like snthpy said "real" is a shortcut to say infinitely subdivisible. The numbers themselves are actually rationals. > How are the intervals / portions decided? Is that simpler than generating UUIDs? Nodes are forked from an existing node, that node decides which portion of its interval it gives to the new node. You pick the splitting point to keep complexity low. Regarding comparison: you always know the values of the whole curve. When I say "a node only has to know about its share of the interval" I only mean the ID space. In a version vector there is a direct link between identifiers and counters, whereas here outside of your share of the interval you don't know who owns what or how many devices there are at any given point. | ||||||||
| ||||||||
▲ | rdtsc 2 days ago | parent | prev [-] | |||||||
> Why are interval boundaries real-value in a system that cannot actually express real numbers? They can be represented as a binary tree, that is a nested list or tuples, for instance. The whole interval (1) could be split into (1,0) and (0,1)). Then (1,0) split into ((1,0),0) and ((0,1),0). And (0,1) split into (0,(1,0)) and (0,(0,1) and so on. | ||||||||
|