educative.io

Semantic Reconciliation

** If versioning is enabled, perform syntactic reconciliation and generate an opaque write context that contains the vector clock that subsumes all the remaining versions.**

After the read response has been returned to the caller, the state machine waits for a short period to receive any outstanding responses. If stale versions were returned in any of the responses, the coordinator updates those nodes with the latest version. This process is called Read Repair because it repairs replicas that have missed a recent update.

If there is a syntactic reconciliation of data and the client responds with a stale version in the write context why doesn’t the storage engine give preference to the version of the data sent by the client in the write context? Isn’t it that data sent by the client takes precedence over automatic syntactic reconciliation done by the engine?


Course: Grokking the Advanced System Design Interview - Learn Interactively
Lesson: The Life of Dynamo’s put() & get() Operations - Grokking the Advanced System Design Interview


Course: Grokking the Advanced System Design Interview - Learn Interactively
Lesson: The Life of Dynamo’s put() & get() Operations - Grokking the Advanced System Design Interview


Course: Grokking the Advanced System Design Interview - Learn Interactively
Lesson: The Life of Dynamo’s put() & get() Operations - Grokking the Advanced System Design Interview

Hi @Akshay_Kulkarni

My name is Shahrukh Naeem. I hope everything is going well with you. Thank you for reaching out about this. I will try my best to answer your query!

Each modification creates a new, immutable version of the data so there are multiple versions can be present at the same time.
There are two possibilities that arise here:

  • Most of the time, the system will be able to determine which version is authoritative (“syntactic reconciliation”)
  • Sometimes, the client needs to step in to reconcile multiple branches (“semantic reconciliation”)

Reads and writes go to the first N healthy nodes in the preference list, skipping those that are down or inaccessible.

I hope that this guide is helpful. Remember that I am always available via message to help you with any difficulty you might encounter.

Regards,

Happy Learning :slight_smile: