用途:ArangoDB 是原生多模型数据库,可用键值、JSON 文档和图三种模型存储数据,并用统一查询语言 AQL 查询,支持 ACID 事务。适合需要统一文档、图与键值模型的数据架构、复杂图遍历、统一知识图谱以及集成全文与地理空间搜索的场景。
主要能力:AQL 类 SQL 语法,可组合过滤、遍历与返回结果;文档集合存 JSON 实体,边集合用 _from 与 _to 表示有向连接;图遍历支持从指定顶点出发的深度优先与广度优先遍历,可限定跳数并返回路径与距离;分布式集群支持 OneShard 与 SmartGraphs,通过 smartGraphAttribute 将关联图顶点与边共置于同一物理服务器以减少网络开销;ArangoSearch 提供全文索引、BM25 评分与地理空间查询。
用法示例:AQL 查询可写作 FOR u IN users FILTER u.active == true FOR order IN OUTBOUND u orders RETURN { user: u.name, order: order.product };图遍历可写作 FOR v, e, p IN 1..3 OUTBOUND 'users/alice' GRAPH 'socialGraph' FILTER e.relationship == 'mentor' RETURN { colleague: v.name, distance: LENGTH(p.edges), path: p.vertices[*].name }。创建 SmartGraph 示例:db._createSmartGraph("tenantSocialGraph", [{ collection: "members", from: ["users"], to: ["users"] }], { smartGraphAttribute: "tenantId" })。
最佳实践:多租户集群使用 SmartGraphs 就近放置子图;用 ArangoSearch 视图替代外部 Elasticsearch;图遍历中尽早用 PRUNE 与过滤条件;AQL 变量以 @param 绑定以防注入并提升编译缓存命中。避免无界遍历、避免覆盖自动索引的 _from/_to、避免跨租户混用数据。
限制与排错:更新冲突 [1200] 可依据 _rev 重试或使用 overwriteMode: 'replace';集合不存在 [1501] 需核实名称与迁移;大稠密图遍历可能内存不足,应限定深度并提前剪枝。Foxx 微服务、具体版本要求与安装方式暂未提供。