Expand description

This module implements Cluster Replicated Data Store for asynchronous updates in a distributed network.

Data is stored in the CrdsValue type, each type has a specific CrdsValueLabel. Labels are semantically grouped into a single record that is identified by a Pubkey.

  • 1 Pubkey maps many CrdsValueLabels
  • 1 CrdsValueLabel maps to 1 CrdsValue The Label, the record Pubkey, and all the record labels can be derived from a single CrdsValue.

The actual data is stored in a single map of CrdsValueLabel(Pubkey) -> CrdsValue This allows for partial record updates to be propagated through the network.

This means that full Record updates are not atomic.

Additional labels can be added by appending them to the CrdsValueLabel, CrdsValue enums.

Merge strategy is implemented in: fn overrides(value: &CrdsValue, other: &VersionedCrdsValue) -> bool

A value is updated to a new version if the labels match, and the value wallclock is later, or the value hash is greater.

Structs

This structure stores some local metadata associated with the CrdsValue

Enums