Skip to content

Что такое CRDT

Коротко:

CRDT (Conflict-free Replicated Data Types) — класс data structures, которые можно независимо обновлять на разных replicas и затем merge deterministically без conflict resolution. Основа collaborative editors (Notion, Figma, Linear). Типы: G-Counter (grow-only counter), LWW-Set (last-write-wins), RGA (replicated growable array для text). Библиотеки: Yjs, Automerge.

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • Commutative: A+B = B+A (порядок операций не важен)
  • Associative: (A+B)+C = A+(B+C)
  • Idempotent: apply тот же update дважды = same result
  • Vector clocks / Lamport timestamps для ordering
  • Use cases: collaborative editing, offline-first, distributed counters

Пример

// Yjs collaborative text
const ydoc = new Y.Doc();
const ytext = ydoc.getText('content');
ytext.insert(0, 'Hello');
// Syncs over WebSocket — other users see update

Смежные термины

Больше по теме

Часто задаваемые вопросы

CRDT vs Operational Transform?

OT (Google Docs) — server-authoritative, transforms operations. CRDT — peer-to-peer compatible, merging без server. CRDT выигрывает для offline-first.

Performance?

Yjs handles thousands edits/sec. Automerge медленнее но более featureful. Both в production (Linear, Figma).

Нужно ли для простого todo app?

Нет — overhead. CRDT имеет смысл начиная с collaborative editing или true offline-first UX.