文档核心概念操作 (Operations) 与变更 (Changes)

Operations 与 Changes

快速概览

Operation 是原子级编辑;Change 是带有元数据的逻辑操作组。理解二者有助于你优化同步与性能。

核心概念

Operations

  • 改变的原子单元(插入单个 Unicode 字符、删除单个字符、向 Map 插入条目等)
  • 内部会自动合并以提升效率
  • 每个操作都有唯一 ID:(peerId, counter)

Changes

  • 连续操作的集合
  • 包含元数据(时间戳、依赖、peer ID)
  • 通过 commit() 或自动提交创建
const  = new ();
const  = .("text");
 
.(0, "Hello");     // Operation
.(5, " World");    // Operation
.();                // 合并为一个 Change

自动合并

来自同一 peer 的连续操作会自动合并到一个 Change 中:

const  = new ();
const  = .("text");
 
.(0, "abc");
.();  // Change #1
 
.(3, "def");
.();  // 与 #1 合并(同一 peer,连续操作)

何时会创建新的 Change

  1. 跨 peer 依赖:在导入远端操作之后
  2. 时间间隔:启用时间戳时,若提交间隔超过合并阈值(默认 1000 秒)
  3. 不同的提交信息
const  = new ();
.("text").(0, "v1");
.(); // Change #1
 
// 导入其他 peer 的操作
const  = new ();
.("text").(0, "v1");
const  = .({ : "update" });
.();
 
// 下一次提交会新建 Change(存在远端依赖)
.("text").(0, "v2");
.(); // Change #2

对同步与存储的影响

  • 历史记录:Change 追踪逻辑工作单元
  • 同步:依赖关系保证因果顺序
  • 存储:自动合并减少元数据开销

相关文档