Loom is a set of basic CRDT's that are designed to be composable and extensible. We include support for delta-CRDT's (δ-CRDT's) where it makes sense.
In order to combat issues with large objects, δ-CRDT's are supported for some datatypes. You can extract deltas from delta-CRDT's, and periodically clear them out from your datastructures to reduce memory constraints.
Conflict-free, Coordination-free, Commutative, or Convergent datatypes, CRDT's are usually formally described as "join semi-lattices". Mathematical jargon aside, CRDT's track causality for modifications to your data. Because of this, time becomes less relevant, and coordination becomes unnecessary to get accurate values for your data.
I will have a simple explanation here for a basic gcounter and a pncounter.
For now, I can simply point you to the GCounter code in here.
Elixir
100.0%
Loom is a set of basic CRDT's that are designed to be composable and extensible. We include support for delta-CRDT's (δ-CRDT's) where it makes sense.
In order to combat issues with large objects, δ-CRDT's are supported for some datatypes. You can extract deltas from delta-CRDT's, and periodically clear them out from your datastructures to reduce memory constraints.
Conflict-free, Coordination-free, Commutative, or Convergent datatypes, CRDT's are usually formally described as "join semi-lattices". Mathematical jargon aside, CRDT's track causality for modifications to your data. Because of this, time becomes less relevant, and coordination becomes unnecessary to get accurate values for your data.
I will have a simple explanation here for a basic gcounter and a pncounter.
For now, I can simply point you to the GCounter code in here.
Elixir
100.0%