注疏 · 数据库

ltree

别名 ltree

PostgreSQL 的一个扩展,用来存和查树状层级路径(如 1.5.12)。mindplace 用它表示术语的 is_a 层级。

简述

ltree 是 Postgres 的一个扩展,专门存”层级路径”这种数据——像 1.5.12 这样的点分串,表示一个节点在树里的位置。查”某节点的所有后代”之类的层级查询,它有专门操作符,很快。

详解

mindplace 用它记术语的 is_a 层级:比如 list 是 collection 的子类,路径就串起来。用 id 串而不是名字串,是因为中文不能直接当 ltree 的 label(它只认字母数字下划线),而且用 id 串,术语改名也不用重排路径。层级和向量、图、全文检索一起,都塞在同一个 Postgres 里。

深化

ltree 是”一库全扛”策略的一块拼图。这个站需要向量检索pgvector)、图关系(双链 的边)、层级(ltree)、全文检索,本可以上四种专门数据库,但那意味着四套备份、四套运维、还要操心它们之间的数据同步。Postgres 加几个扩展就全办了,事务和备份是同一套体系。对单人维护的十年项目,“少一个要照顾的组件”比”每个组件都最优”重要得多。