▲ | josephg 4 days ago | |||||||||||||||||||||||||
It requires a different primary key than an autoincrementing integer. One popular choice is to use a tuple of (peer_guid, incrementing integer). Or a randomly generated GUID, or a hash of the associated data. Then each event is associated with zero or more "parent events". - An event has 0 parents if it is the first change - An event has 1 parent if it simply came after that event in sequence - And if an event merges 2 or more branches in history, it says it comes after all of those events You can also think about it like a set. If I know about events {A, B, C} and generate event D, then D happens-after {A, B, C}. (Written {A,B,C} -> D). But if A->B, then I only need to explicitly record that {B,C} -> D because the relationship is transitive. A -> B -> D implies A -> D. | ||||||||||||||||||||||||||
▲ | shakna 4 days ago | parent [-] | |||||||||||||||||||||||||
And the moment you need to merge, unrepresentable states become possible. There are techniques to make it less painful, but it will still be possible. | ||||||||||||||||||||||||||
|