跳到主要内容

管理 Alias

Zilliz Cloud 为 Collection 提供了 Alias 管理能力。本节介绍如何创建、查看、删除 Alias。

为何使用 Alias

通过为指定 Collection 绑定不同的别名,可以在不修改应用代码的情况下方便的更换不同的 Collection。

假设您的应用需要查询的 Collection 绑定了一个名为 prod_data的 Alias。当您需要使用新数据时,你可以按照如下步骤以不中断业务的方式完成该任务:

  1. 创建一个新的 Collection,并将其命名为 prod_data_v2

  2. 准备数据:为该 Collection 创建索引并加载该 Collection。然后将新的数据存入该 Collection。

  3. 更换别名:在新 Collection 就绪后,将 prod_data 这个 Alias 重新分配给 prod_data_v2 这个 Collection。

这时,您的应用仍旧可以将业务请求发送到 prod_data,业务运行丝毫不受影响。该机制让数据无缝更新成为可能,简化了向量检索服务的蓝绿部署流程。

Alias 的关键特性:

  • 一个 Collection 可以绑定多个 Alias。

  • 一个 Alias 一次只能绑定到一个 Collection,不能同时绑定多个 Collection。

  • 在处理接收到的业务请求时,Zilliz Cloud 会检查请求中指定的 Collection 名称是否存在。如果不存在,Zilliz Cloud 就会检查现有 Alias 中是否存在该名称。

创建 Alias

您可以参考如下代码为您的 Collection 创建 Alias。

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

# 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"
)

查看分配给 Collection 的所有 Alias

你可以参考如下代码查看分配给指定 Collection 的所有 Alias。

# 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 详情

你可以参考如下代码查看指定 Alias 绑定的 Collection。

# 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 的 Alias 重新分配给另一个 Collection。

# 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

你可以参考如下代码删除指定的 Alias。

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

client.drop_alias(
alias="alice"
)