Skip to content

Latest commit

 

History

History
89 lines (57 loc) · 2.6 KB

TODO.md

File metadata and controls

89 lines (57 loc) · 2.6 KB

TODO

Specification <number> below refers to the section in the paper A comprehensive study of Convergent and Commutative Replicated Data Types describing the CRDT.

Scratched out means DONE.

Documentation

Write docs for:

  • The functionality and semantics of the CvRDT
  • The JSON view of each CvRDT
  • Simple JavaScript demo querying the REST server
  • How to start up the cluster service
  • REST API
  • Scala CRDT API
  • How to run the DemoRestServer
  • Architecture (pub/sub, leveldb) etc.
  • Configuration
  • Scala ClusterClient API
  • LevelDB and other storage options
  • More background and concepts around CRDT, CAP and CALM
  • Explain difference between CvRDT and CmRDT

Query API

Support in both Scala and REST API:

  • def keys(): Set[String]
  • def values(): Iterator[CRDT]

CvRDTs (state-based)

Counters

  • Specification 6 State-based increment-only counter
  • Specification 7 State-based PN-Counter

Sets

Registers

  • Specification 8 State-based Last-Writer-Wins Register (LWW Register)
  • Specification 10 State-based Multi-Value Register (MV-Register)

CmRDTs (ops-based)

Counters

  • Specification 5 op-based Counter

Sets

  • Specification 9 Op-based LWW-Register
  • Specification 13 U-Set: Op-based 2P-Set with unique elements
  • Specification 14 Molli, Weiss, Skaf Set
  • Optimized OR Set - as defined in An Optimized Conflict-free Replicated Set

Graphs

  • Specification 16 2P2P-Graph (op-based)
  • Specification 17 Add-only Monotonic DAG (op-based)
  • Specification 18 Add-Remove Partial Order

Array

  • Specification 19 Replicated Growable Array (RGA)

Shopping Cart

  • Specification 21 Op-based Observed-Remove Shopping Cart (OR-Cart)

Misc Stuff

Garbage Collection for CvRDTs

  • TODO

Reliable Broadcast for CmRDTs

Client API

  • Write a JavaScript CRDT library. So a client can grab the real JSON representation, modify it, do the merges as needed and then push the result back to the server.
  • Java API for CRDT classes/ClusterClient