跳到主要内容
版本:v3.0.x

管理 Alias

在 Milvus 中,Alias(别名)是 Collection 的可变辅助名称。Alias 提供了一层抽象,使您可以在不修改应用程序代码的情况下动态切换 Collection。这对于生产环境中的无缝数据更新、A/B 测试和其他运维场景特别有用。

本页演示了如何创建、列出、重新分配和删除 Collection Alias。

为什么使用 Alias?

使用别名的主要好处是将客户端应用程序与特定的物理 Collection 名称分离。

想象一下,你有一个实时应用程序,它查询一个名为 prod_data 的 Collection。当您需要更新底层数据时,可以在不中断服务的情况下执行更新。工作流程如下:

  1. 创建一个新 Collection:创建一个新的 Collection,例如 prod_data_v2
  2. 准备数据:在 prod_data_v2 中加载新数据并编制索引。
  3. 切换别名:一旦新的 Collection 准备就绪,原子式地将旧 Collection 的别名 prod_data 重新分配给 prod_data_v2

您的应用程序将继续向别名 prod_data 发送请求,不会出现停机。这种机制可以实现无缝更新,并简化向量搜索服务的蓝绿部署等运维场景。

Alias 的关键属性

  • 一个 Collection 可以有多个别名。
  • 一个别名一次只能指向一个 Collection。
  • 处理请求时,Milvus 会首先检查是否存在提供名称的 Collection。如果不存在,它就会检查该名称是否是某个 Collection 的别名。

创建 Alias

下面的代码片段演示了如何为 Collection 创建别名。

Python
from pymilvus import MilvusClient

client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)

# 9. Manage aliases
# 9.1. Create aliases
client.create_alias(
collection_name="my_collection_1",
alias="bob"
)

client.create_alias(
collection_name="my_collection_1",
alias="alice"
)

列出 Alias

以下代码片段演示了列出分配给特定 Collection 的别名的过程。

Python
# 9.2. List aliases
res = client.list_aliases(
collection_name="my_collection_1"
)

print(res)

# Output
#
# {
# "aliases": [
# "bob",
# "alice"
# ],
# "collection_name": "my_collection_1",
# "db_name": "default"
# }

描述 Alias

以下代码片段详细描述了特定别名,包括分配给该别名的 Collection 名称。

Python
# 9.3. Describe aliases
res = client.describe_alias(
alias="bob"
)

print(res)

# Output
#
# {
# "alias": "bob",
# "collection_name": "my_collection_1",
# "db_name": "default"
# }

更改 Alias

您可以将已分配给特定 Collection 的别名重新分配给另一个 Collection。

Python
# 9.4 Reassign aliases to other collections
client.alter_alias(
collection_name="my_collection_2",
alias="alice"
)

res = client.list_aliases(
collection_name="my_collection_2"
)

print(res)

# Output
#
# {
# "aliases": [
# "alice"
# ],
# "collection_name": "my_collection_2",
# "db_name": "default"
# }

res = client.list_aliases(
collection_name="my_collection_1"
)

print(res)

# Output
#
# {
# "aliases": [
# "bob"
# ],
# "collection_name": "my_collection_1",
# "db_name": "default"
# }

删除 Alias

下面的代码片段演示了删除别名的过程。

Python
# 9.5 Drop aliases
client.drop_alias(
alias="bob"
)

client.drop_alias(
alias="alice"
)