最佳实践:图系统的质量、性能与安全准则
最佳实践是可执行的约束,不是海报上的口号。每条准则都应能转化为检查项、指标或 CI 门禁。
1. 建模准则
1.1 先查询形状,后 Schema
召开建模会时,先写 5 条 「必须能在 P95 延迟内回答」的问题,再画节点边。没有查询形状的 Schema,几乎总会过度设计或设计不足。
1.2 边类型词汇表
维护受控词表:动词化、时态清晰、避免同义重复(WORKS_AT 与 EMPLOYED_BY 并存需有映射规则)。为每个边类型写:方向语义、基数、是否允许多重、必需属性、生命周期。
1.3 超级节点预防
识别天然超级节点(名人、热门商品、全国省份节点)。策略组合:
- 边类型拆分(粉丝边与互动边分离)
- 分片(按时间/哈希把边挂到
User#shard) - 预聚合(粉丝数物化,详情懒加载)
- 查询限流与采样返回
- 冷热分层(老边归档)
1.4 属性 vs 节点
枚举型、度量型、很少作为关系中心的概念 → 属性。需要独立关系或审计的概念 → 节点。灰色地带写 ADR 记录决策。
2. 数据质量准则
| 门禁 | 失败即 |
|---|---|
| 主键唯一约束违反 | 阻断发布 |
| 孤儿边 | 阻断或自动隔离 |
| 黄金查询结果漂移超阈值 | 阻断 |
| 置信度缺失的生产边占比过高 | 告警 |
| 源系统与图计数差超阈值 | 告警并冻结增量 |
边级元数据最低集:source、confidence、valid_from/valid_to 或 extracted_at、pipeline_version。
3. 性能准则
3.1 索引
为高选择性点查字段建唯一/索引;为复合查询考虑复合索引;全文检索与图索引职责分离。定期用慢查询日志反推缺失索引。
3.2 查询
- 禁止无界变长路径进入线上默认 API
- 默认 LIMIT;可视化另设硬顶
- 读写分离或副本承担重分析
- 重算法(全图 PageRank)走离线作业,不走在线事务通道
3.3 导入
大批量用 bulk;增量保证幂等;导入窗口与备份窗口错 开;导入后强制质量门禁。
3.4 容量
跟踪:节点/边增长率、度 P99、磁盘、堆外内存、页缓存命中率。为 3× 增长预留演练。
4. GraphRAG 准则
- 证据优先:无证据不生成断言。
- 边类型白名单:问答扩展只走可信关系。
- 跳数预算:默认 1~2 跳,例外审批。
- 双通道延迟 SLO:图与向量分开计量。
- 评测集版本化:与提示词、模型版本一起钉扎。
- 可回退:图失败时明确降级策略与用户提示。
- 引用可点击:回到三元组或原文,不造假链接。
5. GNN 准则
- 防泄漏划分(时间切分优先)。
- 报告对比基线(MLP/规则/流行度)。
- 记录图快照哈希与特征版本。
- 监控嵌入漂移与近邻稳定性。
- 在线用嵌入时保留规则/图查询解释通道。
- 不把软预测当硬事实写入生产图,除非经过审批流。
6. 安全准则
- 查询参数化;禁用终端用户任意图查询语言(或强沙箱)
- 多租户:标签/属性隔离 + 强制过滤器,测试跨租户穿透
- 导出脱敏;生产图备份加密
- 最小权限服务账号;审计谁在何时读了哪些子图
- 对 LLM 工具调用图 API 做速率与范围限制,防代理被劫持扫图
7. 可靠性与演进
破坏性变更必须可回滚。图比表更怕「悄悄改边含义」。
8. 观测仪表盘(建议最小集)
- 查询 P95/P99 分边类型
- 慢查询 TopN
- 度分布分位数
- 导入滞后
- 约束违反
- GraphRAG 空子图率 / 引用缺失率
- 错误率按 API 意图分类
9. 团队协作实践
- 术语表:节点/边/路径/子图/投影/嵌入中英文对照
- 黄金数据集:脱敏小图 + 期望查询结果,新人第一周必跑
- 图诊所:双周一次,带着 PROFILE 与度分布看病
- Demo 纪律:演示必须展示失败案例与不知道,不单秀成功路径
10. 反模式清单
| 反模式 | 后果 | 纠正 |
|---|---|---|
| 万能 RELATED 边 | 无法优化与解释 | 受控词表 |
| 线上全图算法 | 延迟爆炸 | 离线作业 |
| 无评测 GraphRAG | 幻觉上线 | 忠实度集 |
| 字符串拼接 Cypher | 注入 | 参数化 |
| 把 GNN 分数当事实边 | 污染知识库 | 建议层 |
| 只靠大屏验收 | 虚假安全感 | 黄金查询 CI |
11. 落地 30 天计划
第 1 周:查询形状 + Schema ADR + 约束。
第 2 周:导入幂等 + 质量门禁 + 黄金查询 CI。
第 3 周:意图化 API + 参数化 + 租户隔离测试。
第 4 周:观测仪表盘 + 一次故障演练(超级节点查询)+ 文档化回退。
12. 检查单(发布前)
- 5 条核心问题的 P95 达标
- 无无界变长路径默认暴露
- 约束与索引清单已评审
- 度 Top 节点有治理策略
- GraphRAG 评测通过阈值
- 备份恢复演练在 90 天内
- 安全:渗透或至少跨租户测试
- ADR 与术语表已更新
13. 小结
最佳实践的本质是:让关系系统在规模与不确定性下仍可解释、可运营、可回滚。把本文条款剪成你的仓库 CHECKLIST.md,比再读一本新书更有用。常见疑问见 FAQ。
14. 深度实践:超级节点治理剧本
假设 Product:hot-sku 有 800 万 PURCHASED_BY 入边。错误做法:MATCH (p:Product {id:$id})<-[:PURCHASED_BY]-(u) RETURN u。正确剧本:
- 识别:度分布作业每天输出 TopN。
- API 分层:
GET /product/stats返回物化计数;GET /product/buyers必须带时间窗与分页。 - 存储分层:近 90 天边留热图;历史边进冷存储或分片节点。
- 查询改写:先查预聚合表/节点属性,再抽样返回示例买家。
- 演练:在预发用脚本打超度查询,验证限流与超时是否符合预期。
没有这套剧本,再强的硬件也会被一条邻居查询打穿。
15. 深度实践:多租户隔离
三种常见模式:
| 模式 | 做法 | 风险 |
|---|---|---|
| 图即租户 | 每租户独立库 | 运维成本高,隔离强 |
| 标签隔离 | 所有查询强制 tenant_id | 漏过滤即穿透 |
| 属性隔离 | 节点属性带租户 | 同标签误联边 |
推荐:意图化 API 在服务端注入租户谓词;禁止客户端提交原始查询;集成测试包含「租户 A 凭证读租户 B」必失败用例。
16. 深度实践:Schema 评审会议程
- 业务问题与成功指标(10 分钟)
- 查询形状草图(15 分钟)
- 节点/边词表(15 分钟)
- 超级节点与基数估计(10 分钟)
- 约束/索引草案(10 分钟)
- 演化与废弃策略(10 分钟)
- 安全与租户(10 分钟)
- 决议与 ADR 起草人(5 分钟)
无议程的建模会,容易变成工具偏好争论。
17. 性能预算表示例
API: POST /v1/path
P50 < 50ms, P95 < 200ms, P99 < 500ms
max_hops: 4
max_paths: 20
edge_types whitelist: KNOWS, WORKS_AT
timeout: 800ms
fallback: 429 + 建议缩小跳数
把预算写进 OpenAPI 描述,测试用压测基线锁定。
18. 质量评分卡(月度)
为图平台打分(每项 0–5):
- 新鲜度、完整度、一致度、连通度、可解释度、性能、安全、文档度
低于阈值的项必须有负责人与下月动作。避免只报「节点数又增长了」这种虚荣指标。
19. 与 LLM 协作的安全实践
- 工具描述中明确禁止「导出全图」
- 对 Agent 会话设子图访问配额
- 记录 Agent 发起的所有图查询文本与结果哈希
- 高危写操作(删边、并实体)需人工审批
- 提示词注入演练:恶意文档试图诱导 Agent 改写边
20. 从最佳实践到 FAQ
若你在执行清单时卡在概念分歧(例如「到底要不要上图」),请带着具体查询形状去读 FAQ;若你在规划学习路径,请读「从零到一」。
21. 备份、恢复与演练
图数据恢复不仅是「文件拷回来」,还要验证:
- 约束是否重建成功。
- 索引是否在线。
- 黄金查询是否一致。
- 增量 CDC 位点是否可续接。
- GraphRAG 依赖的向量索引是否需要同步重建。
每季度至少一次恢复演练到隔离环境,记录 RTO/RPO 实际值,而不是设计值。
22. 文档即产品
对外文档最少包括:词表、查询形状目录、API 意图列表、错误码、限制说明、示例与反例。对内文档包括:ADR、事故回顾、容量模型。图系统的认知负担高于普通 CRUD,文档欠债会直接变成线上误操作。
23. 总结性口号(可贴在仓库 README)
有界路径、有主之边、有证之言、有测之模型、有隔离之租户、有预算之延迟。
若一条新功能违反其中任一句,先改设计,再写代码。
24. 案例素描:风控图
业务问题:识别「散团欺诈」——多个新账户经同一设备与中间人汇聚提现。
实践要点:
- 节点:Account、Device、IP、Merchant、CashOutEvent(事件中心)。
- 边:
USED_DEVICE、USED_IP、CASH_OUT、REFERRED_BY。 - 在线:限制跳数的邻域与规则(新账户 + 共享设备)。
- 离线:社区发现与弱连通分量找团;GNN 可选。
- 治理:热门商户/公共 IP 超级节点必须采样。
- 合规:导出子图脱敏,操作全审计。
把该素描改成你的行业版本,是实践最佳实践的最快方法。
25. 案例素描:企业知识问答
- 文档进向量库;组织/项目/系统进图。
- 边带来源与有效期;过期架构边不得进入答案。
- 评测集含「已过时文档」陷阱题,专门打假。
- 发布门禁:引用覆盖率 < 阈值则阻断模型版本升级。
26. 结语
最佳实践不是读完即止的长文,而是你每次变更 Schema、每次上线 API、每次接入 LLM 时都要打开的清单。把 §12 检查单复制到 CI,把 §8 仪表盘接到值班,图工程才会从概念变成组织能力。