按租户或知识库管理数据

更新时间:
复制 MD 格式

Collection 与 Slice 面向大量租户、知识库和代码仓库,支持业务空间持续水平扩展。应用通过统一的 Collection 入口访问数据,用 Slice 表示每个业务空间,无需为每个租户单独创建和维护索引。

随着业务空间增多,系统将新 Slice 分配到可用的底层索引(Backing);达到分配阈值后,继续使用其他或新建 Backing,以更多分片承载新业务空间。业务规模不再受单个索引预设分片数限制,应用仍使用原来的 Collection 名和 Slice 访问方式。

结合无状态架构,持久存储按实际用量增长和计费,写入与查询资源可以分别扩展,让数据规模、租户数量和访问负载按各自的节奏增长。

三个基本概念

概念

含义

示例

Collection(数据集合)

应用访问数据的入口,统一定义字段类型(Mapping)和索引设置(Settings)。

knowledge-chunks 保存各租户的知识库内容。

Slice(数据分区)

Collection 内按业务划分的数据范围,通过 _slice 选择。

tenant-a 只包含租户 A 的文档。

Backing Index(底层索引,简称 Backing)

系统实际存放文档的 Elasticsearch 索引,可以承载多个 Slice。系统负责分配,应用通过 Collection 和 Slice 访问数据。

批量开通租户前,可以预创建 Backing,再注册各租户的 Slice。

同一 Collection 中的 Slice 共用 Mapping,但各自管理文档:tenant-a 和 tenant-b 可以使用相同文档 ID,互不覆盖。应用应同时保存业务 Slice 名和文档 ID。Slice 本身不是账号权限边界,租户鉴权仍需由应用或产品支持的安全机制负责。

根据业务选择数据范围

查询前已经知道租户、知识库或仓库标识时,由应用通过 _slice 选择一个或多个业务空间;这种方式称为命名空间模式(exact)。完整示例见快速入门:按租户或知识库检索。

如果业务已完成离线向量聚类,需要根据查询向量自动选择候选簇,可以使用向量簇召回模式。两种模式均可结合 Sliced DiskBBQ,在选定 Slice 内执行向量检索,减少无关数据的读取与计算,见DiskBBQ 与 Sliced DiskBBQ 向量检索。

批量开通租户前,先准备底层索引

Backing 默认按需创建。批量注册租户或导入数据前,推荐先预创建多个 Backing,再注册 Slice 并导入业务文档。这样可以减少首次写入时创建索引的等待,让新业务空间的数据分散到多个底层索引上,有助于分散读写负载。预创建不会重新分布已有数据,也不会增加计算节点;实际负载仍取决于各业务空间的数据量和访问频率。

请求参数、分配策略变化、响应和重试规则见预创建 Backing。

水平扩展针对 Collection 整体的业务空间规模;单个 Slice 仍使用所在 Backing 的分片配置,已有 Slice 不会因新建 Backing 而自动拆分或迁移。容量参数与生效范围见容量参数如何生效。

控制查询范围和开销

按租户或知识库查询时,只访问目标 Slice 可以减少对其他业务空间数据的读取与计算。即使 Collection 中不断加入新租户,单次业务查询仍可聚焦当前租户的数据,无需扩大到整个 Collection。

关键词和全文检索可通过默认开启的 sliced postings 跳过不相关数据;向量检索可通过 Sliced DiskBBQ 缩小向量访问范围。两者都适合“业务空间很多、每次只查询少量空间”的访问方式。

常规查询保持一个或少量 Slice 的范围。全量查询的开销会随 Backing 和分片数量增长,适合有明确范围和负载预算的分析任务;向量簇召回的候选 Slice 数量应结合召回率和查询开销确定。

后续步骤