图结构 (Graph)
图用于表达点与边组成的关系网络,常见于社交关系、知识图谱、推荐系统等。
在 Aiao 中可采用两种方式建模:
- 使用多对多关系(邻接集)——简单直接,适合轻量场景
- 使用
@GraphEntity——自动生成边表,支持边权重与边属性
多对多方式(邻接集)
可用多对多关系实现用户之间的“好友”关系(无向图):
GraphEntity 方式(自动边表)
@GraphEntity 会将类标记为图实体,并在运行期根据配置生成一张“边表”(命名为 节点实体名_edges)。
import { GraphEntity, GraphEntityBase, PropertyType } from '@aiao/rxdb';
@GraphEntity({
name: 'UserNode',
properties: [
{ name: 'name', type: PropertyType.string },
{ name: 'type', type: PropertyType.string }
],
features: {
// graphType: 'undirected-graph' | 'directed-graph'(默认无向图)
graphWeight: true, // 边是否带权重(生成 weight 字段)
graphProperties: true // 是否启用边属性 JSON(生成 properties 字段)
}
})
export class UserNode extends GraphEntityBase {}
自动边表:
- 表名:
UserNode_edges(与节点实体同命名空间) - 字段:
weight?: number、properties?: json(由 features 决定)
说明:图能力仍在演进中,当前主要用于模型定义与代码生成;查询与算法可基于该边表自行实现,或配合后续 GraphRepository 能力。