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.
- Strong Eventual Consistency and Conflict-free Replicated Data Types
- A good introduction to the concept of CRDTs: http://research.microsoft.com/apps/video/default.aspx?id=153540&r=1
- A comprehensive study of Convergent and Commutative Replicated Data Types
- A survey with references for several popular CRDTs: http://hal.inria.fr/docs/00/55/55/88/PDF/techreport.pdf
- Efficient State-based CRDTs by Delta-Mutation