Verification of CRDT Implementation and Client Programs

abstraction for conflict free replicated data n.w
1 / 9
Embed
Share

Explore the challenges and solutions in verifying the functional correctness of Conflict-Free Replicated Data Types (CRDTs) and client programs. Learn about Strong Eventual Consistency (SEC), modular verification, and the importance of abstraction. Discover how to ensure the correctness of both the CRDT implementation and client programs for data replication in modern database systems.

  • Verification
  • CRDTs
  • Client Programs
  • Abstraction
  • SEC

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Abstraction for Conflict-Free Replicated Data Types Hongjin Liang and Xinyu Feng Nanjing University

  2. Replicated Data Types Client Program Client Program Replicated Data Types Client Program Are the local copies of the data the same? Data is replicated in modern database systems. Various protocols are proposed to ensure data consistency.

  3. Conflict-Free Replicated Data Types (CRDTs) Widely used in real world systems, e.g. How to specify the correctness of CRDTs? Data consistency between different nodes Strong Eventual Consistency (SEC) Verified in many existing works (e.g. [Gomes et al 17, Nagar and Jagannathan 19]) SEC does not encode functionality of the data type, thus does not provide sufficient information for client reasoning.

  4. Example: Collaborative Editing u := read(); if ( cute u) addAfter( cats , are ); Bob Alice CRDT Impl of Sequence addAfter( cats , cute ); x := read(); SEC can help verify that the final states of different nodes converge. But we also want to verify the functional correctness of the whole program: e.g. the final states and the value of x are cats cute or cats are cute

  5. How to verify functional correctness of whole programs Client Program ?1 ?2 ?? CRDT Impl of Sequence CRDT Implementation Need to verify both the CRDT impl and the client program!

  6. How to verify functional correctness of whole programs Different client programs Same client program ?1 ?2 ?? Same CRDT implementation Different CRDT impl of the data type Verify the CRDT impl once and for all? Verify the client program once and for all? To do modular and layered verification, abstraction is necessary!

  7. Our Contributions Program logic for clients Client Program ?1 ?2 ?? Separate verification Abstraction: Strong Eventual Consistency + Functional Correctness Based on Atomic Specification Proof method for CRDTs CRDT Implementation

  8. Our Contributions Program logic for clients Client Program ?1 ?2 ?? Verified several interesting client programs Separate verification Abstraction: Strong Eventual Consistency + Functional Correctness Based on Atomic Specification Verified replicated growable array (RGA), continuous sequence, add-wins set, remove-wins set, 2P-set, LWW-element set, grow-only set, LWW register, replicated counter, Proof method for CRDTs CRDT Implementation

  9. Thanks!

More Related Content