跳到主要内容

图结构 (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?: numberproperties?: json(由 features 决定)

说明:图能力仍在演进中,当前主要用于模型定义与代码生成;查询与算法可基于该边表自行实现,或配合后续 GraphRepository 能力。