实现多租户
在 Milvus 中,多租户意味着多个客户或团队——称为租户——共享同一个集群,同时维护隔离的数据环境。
Milvus 支持四种多租户策略,每种策略在可扩展性、数据隔离和灵活性之间提供不同的权衡。本指南将引导您了解每个选项,帮助您为用例选择最合适的策略。
多租户策略
Milvus 在四个级别支持多租户:Database、Collection、Partition 和 Partition Key。
Database 级多租户
使用 Database 级多租户,每个租户都获得一个相应的数据库,其中包含一个或多个 Collection。
-
可扩展性:Database 级多租户策略默认最多支持 64 个租户。
-
数据隔离:每个数据库中的数据完全分离,提供企业级数据隔离,非常适合受监管的环境或有严格合规需求的客户。
-
灵活性:每个数据库可以拥有不同模式的 Collection,提供高度灵活的数据组织,允许每个租户拥有自己的数据模式。
-
其他:此策略还支持 RBAC,实现对每个租户用户访问的细粒度控制。此外,您可以灵活地为特定租户加载或释放数据,以有效管理热数据和冷数据。
Collection 级多租户
使用 Collection 级多租户,每个租户都被分配一个 Collection,提供强数据隔离。
-
可扩展性:由于集群默认最多可容纳 65,536 个 Collection,此策略可以在集群内容纳相同数量的租户。
-
数据隔离:Collection 彼此物理隔离。此策略提供强数据隔离。
-
灵活性:此策略允许每个 Collection 拥有自己的模式,适应具有不同数据模式的租户。
-
其他:此策略还支持 RBAC,允许对租户进行细粒度访问控制。此外,您可以灵活地为特定租户加载或释放数据,以有效管理热数据和冷数据。
Partition 级多租户
在 Partition 级多租户中,每个租户都被分配到共享 Collection 内的手动创建的 Partition。
-
可扩展性:一个 Collection 最多可以容纳每个 Collection 1,024 个 Partition,允许其中相同数量的租户。
-
数据隔离:每个租户的数据通过 Partition 物理分离。
-
灵活性:此策略要求所有租户共享相同的数据模式。并且 Partition 需要手动创建。
-
其他:Partition 级别不支持 RBAC。租户可以单独查询或跨多个 Partition 查询,这使得此方法非常适合涉及跨租户段的聚合查询或分析的场景。此外,您可以灵活地为特定租户加载或释放数据,以有效管理热数据和冷数据。
Partition key 级多租户
使用此策略,所有租户共享单个 Collection 和模式,但每个租户的数据会根据 Partition key 值自动路由到 16 个物理隔离的 Partition 中。虽然每个物理 Partition 可以包含多个租户,但不同租户的数据保持逻辑分离。
-
可扩展性:Partition key 级策略提供最可扩展的方法,支持数百万租户。
-
数据隔离:此策略提供相对较弱的数据隔离,因为多个租户可能共享一个物理 Partition。
-
灵活性:由于所有租户必须共享相同的数据模式,此策略提供有限的数据灵活性。
-
其他:Partition key 级别不支持 RBAC。租户可以单独查询或跨多个 Partition 查询,这使得此方法非常适合涉及跨租户段的聚合查询或分析的场景。
选择正确的多租户策略
下表提供了四个级别多租户策略之间的全面比较。
Database 级 | Collection 级 | Partition 级 | Partition key 级 | |
---|---|---|---|---|
数据隔离 | 物理 | 物理 | 物理 | 物理 + 逻辑 |
最大租户数 | 默认为 64。您可以通过修改 Milvus.yaml 配置文件中的 | 默认为 65,536。您可以通过修改 Milvus.yaml 配置文件中的 | 每个 Collection 最多 1,024 个。 | 数百万 |
数据模式灵活性 | 高 | 中等 | 低 | 低 |
RBAC 支持 | 是 | 是 | 否 | 否 |
搜索性能 | 强 | 强 | 中等 | 中等 |
跨租户搜索支持 | 否 | 否 | 是 | 是 |
支持有效处理热数据和冷数据 | 是 | 是 | 是 | 否 目前,Partition key 级策略不支持。 |
当您在 Milvus 中选择多租户策略时,需要考虑几个因素。
-
可扩展性: Partition Key > Partition > Collection > Database
如果您预期支持非常大量的租户(数百万或更多),请使用 Partition key 级策略。
-
强数据隔离要求:Database = Collection > Partition > Partition Key
如果您有严格的物理数据隔离要求,请选择 Database、Collection 或 Partition 级策略。
-
每个租户数据的灵活数据模式: Database > Collection > Partition = Partition Key
Database 级和 Collection 级策略在数据模式方面提供了完全的灵活性。如果您的租户数据结构不同,请选择 Database 级或 Collection 级多租户。
-
其他
-
性能: 搜索性能由各种因素决定,包括索引、搜索参数和机器配置。Milvus 还支持性能调优。建议在选择多租户策略之前测试实际性能。
-
有效处理热数据和冷数据:目前,Database 级、Collection 级和 Partition 级策略都支持热数据和冷数据处理。
-
跨租户搜索:只有 Partition 级和 Partition key 级策略支持跨租户查询。
-