数据管理系统
本页对应英文版 Data Management System,介绍 relation-graph 如何组织运行时图数据、更新提交、响应式同步以及面向大图场景的性能优化。
架构概览
- 运行时数据统一由
RGDataProvider体系管理。 - provider 内部持有节点、连线、关系映射、提交记录和配置状态。
- 外部 CRUD 操作、布局更新、编辑交互,最终都会归并到这一层。
核心数据结构
RGGraphData
- 用于保存当前图中的节点、普通连线和虚拟连线。
运行时映射表
- 为了提高查找效率,系统通常还维护按 ID、关系和可见性组织的索引结构。
Data Provider 系统
RGDataProvider 类层级
- 基础 provider 负责数据读写。
- 各平台会在此基础上扩展响应式更新能力。
框架适配初始化
- Vue、React、Svelte 等平台会在初始化时把自己的响应式模型接入 provider。
基于 Commit 的更新机制
DataCommits 结构
- 系统通过提交记录描述这次更新新增了什么、修改了什么、删除了什么。
更新流转
- 业务侧调用 CRUD API。
- provider 记录提交并整理影响范围。
- 平台层根据提交内容驱动 UI 刷新。
数据同步流程
CRUD 管线
- 节点新增、删除、更新
- 连线新增、删除、更新
- 连接目标和虚拟连线的特殊处理
关键转换函数
- provider 不只存储数据,还承担数据转换后的落地工作。
性能优化
视口裁剪
- 系统会维护
shouldRender相关列表,仅绘制当前需要显示的内容。
数据存储结构
- 面向渲染与查询的存储结构会优先考虑读写效率,而不是完全贴合原始输入格式。
节点与连线管理
节点 CRUD
- 管理节点新增、删除、属性更新及其衍生状态。
连线 CRUD
- 管理连线对象本身,以及与节点关系的同步维护。
选项管理
RGOptionsFull表示运行时完整配置。- 配置更新与数据更新并不是两条孤立链路,它们会在 provider 层汇合。
数据生命周期
可以把一份图数据的生命周期理解为:
- 输入 JSON
- 转换为运行时对象
- 进入 provider
- 被布局与渲染系统消费
- 在交互和编辑中不断更新
- 在需要时回写为 JSON 或导出