#crdt #distributed-systems

causal-length

CRDT's based on causal length sets

1 unstable release

0.2.0 Mar 20, 2021

#1576 in Data structures

MIT/Apache

43KB
1K SLoC

CRDT's based on "A Low-Cost Set CRDT Based on Causal Lengths" combined with an optional tag. The tag can be any type that satisfies [TagT]. A simple integer, wall clock, lamport timestamp, or even a hybrid logical clock from "Logical Physical Clocks and Consistent Snapshots in Globally Distributed Databases" may be used.

Distinctive features of this group of CRDTs

  • No need for a pre-shared, globally unique identifier
  • While it can use a clock, it is not last-write-wins, and does not require one
  • Updates can be merged out of order or redundantly, so it appears to be a Delta CRDT

Status

  • Set - Fairly solid, based directly on the paper
  • Map - Based on Set, but not in the paper. Could be described as most updated wins. New and not super well tested.
  • Register - Can be regarded as either a single set member (therefore tied to the paper), a delta for either Set or Map, or a CRDT equivalent to Option.

Dependencies

~140–380KB