Question: some question about 《5000x faster CRDTs: An Adventure in Optimization》 #9
Replies: 2 comments
-
For Q1I'm confused by this one too. But I guess Joseph just skipped the concrete detail for simplicity. As illustrated in the original RGA paper, the data structure is which is a linked list with some optimizations already. And Automerge's paper did not mention the recursive structure as well. So I guess it's just Automerge's implementation decision, which was not described in the paper. For Q2The |
Beta Was this translation helpful? Give feedback.
-
Hi! Those diagrams are great! Sorry I didn't see this - github hasn't been emailing me about opened issues here for some reason. I've tweaked the settings so fingers crossed I've fixed it now. I've moved your question from the issue tracker to the discussion board because you are not raising an issue with the diamond types project. As to your questions:
Sorry, I have no idea whats going on in that diagram. interface Item {
data: string
id: [string, number]
left: [string, number]
} The RGA also needs a sequence number - referred to as "timestamp" in the pseudocode you screenshotted. But remember, we're talking about 2 different ideas: How RGA thinks of the world (the semantics of the algorithm) and how we implement that algorithm in fast code. RGA conceptually forms a tree. My contribution is that we can represent that tree using a list. My blog post intentionally didn't include a complete description of RGA, as I wanted a broader audience than just people interested enough in CRDTs.
Yes. Imagine I place my cursor somewhere in a document and type the "a" key. I send you information about that keystroke so that you can add my "a" to your copy of the document. Without the "parent" field, how will you know where to insert that character into your copy of the document?
Huh? Yjs uses a different CRDT algorithm than RGA. (It uses YATA). |
Beta Was this translation helpful? Give feedback.
-
Hello, I am learning CRDT recently and trying to implement my own crdt。After reading your article, I have a few doubts.
more like a list of
Item
(order by id)?Just need
item
andid
and 'left` to implement the plain text crdt ? or parent and right are equivalent ?Beta Was this translation helpful? Give feedback.
All reactions