JavaScript is required

数据管理系统

本页对应英文版 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 层汇合。

数据生命周期

可以把一份图数据的生命周期理解为:

  1. 输入 JSON
  2. 转换为运行时对象
  3. 进入 provider
  4. 被布局与渲染系统消费
  5. 在交互和编辑中不断更新
  6. 在需要时回写为 JSON 或导出

相关文档