问题域/PD-515

数据迁移与恢复

Data Migration & Recovery

存储架构升级时的安全迁移、幂等执行与数据恢复机制

子问题

1.单体→按项目目录迁移

2.幂等标志位防重复执行

3.遗留数据自动恢复

4.多 Store 协调 rehydrate 顺序

5.Flat Array 型数据按 projectId 字段分流与共享数据分离

6.persist 中间件异步写入与 rehydrate 的竞态防护

7.多存储后端(file/localStorage/IndexedDB)的数据择优合并

各项目的解法1 solutions

Signals

横向对比

维度moyin-creator
迁移策略三类 Store 差异化迁移:Record 按 key 分流、Flat Array 按 projectId 分流、Timeline 整体赋值
幂等机制_p/_migrated 标志位文件,失败不写标志位自动重试
数据恢复丰富度对比函数(isRich)检测空数据覆盖,从遗留文件自动恢复
切换协调5 步顺序 switchProject:等待 → 路由指针 → 7 Store rehydrate → 同步 ID → ensure
存储路由双适配器:ProjectScoped 路由到 _p/{pid}/,Split 分流到 _p/ + _shared/
多源兼容三源择优适配器:file > localStorage > IndexedDB,自动迁移最丰富数据源

最佳实践

1.先写新文件再标记完成

2.旧文件保留作为回退

3.启动时自动检测并恢复被覆盖数据

4.从数据本身提取 projectId 而非全局 Store,防止竞态写错目录

5.等待 project-store hydration 完成后再读取 activeProjectId

6.迁移完成前用 loading 界面阻塞用户操作防止脏读