跳转到内容
简体中文

GCounterMap

此内容尚不支持你的语言。

Defined in: src/crdt/GCounterMap.ts:34

Conflict-free Replicated Data Type — a value that converges under replication without coordination. Every implementation is a state-based CvRDT: replicas exchange full state, and merge forms a join-semilattice.

Three properties every implementation must satisfy — tests/unit/crdt verifies them by hand-rolled property tests against generated samples:

  • Idempotent: merge(a, a) === a
  • Commutative: merge(a, b) === merge(b, a)
  • Associative: merge(merge(a, b), c) === merge(a, merge(b, c))

Together these mean: gossip can deliver state updates in any order, deduplicate, retransmit, and the world converges as long as every replica eventually sees every state.

Why state-based and not delta-state. Delta-CRDTs ship only the incremental change rather than the full state — much cheaper on the wire, but the implementation has more moving parts and you need delta acknowledgement protocols. State-based is the simplest thing that converges; we ship it first and revisit if payload size hurts.

K

The concrete CRDT type. F-bounded so subclass merge keeps the right return type without casting at every call site.

  • Crdt<GCounterMap<K>>

get size(): number

Defined in: src/crdt/GCounterMap.ts:88

number

equals(other): boolean

Defined in: src/crdt/GCounterMap.ts:140

GCounterMap<K>

boolean


has(key): boolean

Defined in: src/crdt/GCounterMap.ts:86

K

boolean


increment(replica, key, delta?): GCounterMap<K>

Defined in: src/crdt/GCounterMap.ts:53

Bump the counter under key by delta (default 1) on replica.

string

K

number = 1

GCounterMap<K>


keys(): readonly K[]

Defined in: src/crdt/GCounterMap.ts:77

Snapshot of all keys currently tracked.

readonly K[]


merge(other): GCounterMap<K>

Defined in: src/crdt/GCounterMap.ts:90

Join two replicas. Must be a join-semilattice operation: total, idempotent, commutative, associative.

GCounterMap<K>

GCounterMap<K>

Crdt.merge


pairs(): readonly readonly [K, number][]

Defined in: src/crdt/GCounterMap.ts:82

Snapshot of [key, value] pairs.

readonly readonly [K, number][]


toJSON(): GCounterMapJson

Defined in: src/crdt/GCounterMap.ts:103

Wire-friendly representation — every CRDT must be JSON-encodable so it can travel through the cluster transport without bespoke codecs. toJSON() is the inverse of the static fromJSON factory each impl exposes.

GCounterMapJson

Crdt.toJSON


total(): number

Defined in: src/crdt/GCounterMap.ts:70

Sum across every key.

number


value(key): number

Defined in: src/crdt/GCounterMap.ts:65

Read the counter under key, or 0 if it doesn’t exist.

K

number


static empty<K>(options?): GCounterMap<K>

Defined in: src/crdt/GCounterMap.ts:45

K

GCounterMapOptions<K> = {}

GCounterMap<K>


static fromJSON<K>(json, options?): GCounterMap<K>

Defined in: src/crdt/GCounterMap.ts:119

K

GCounterMapJson

GCounterMapOptions<K> = {}

GCounterMap<K>