メインコンテンツまでスキップ
バージョン: User Guides (BYOC)

パーティションの管理

パーティションはコレクションのサブセットです。各パーティションは親コレクションと同じデータ構造を共有しますが、コレクション内のデータのサブセットのみを含みます。このページでは、パーティションの管理方法を理解するのに役立ちます。

概要

コレクションを作成する際、Zilliz Cloudはコレクション内に_defaultという名前のパーティションも作成します。他のパーティションを追加しない場合、コレクションに挿入されたすべてのエンティティはデフォルトパーティションに配置され、すべての検索およびクエリもデフォルトパーティション内で実行されます。

さらにパーティションを追加し、特定の条件に応じてエンティティをそれらに挿入できます。その後、特定のパーティション内での検索およびクエリを制限して検索性能を向上させることができます。

1つのコレクションには最大1,024個のパーティションを作成できます。

📘注意

パーティションキー機能はパーティションに基づく検索最適化であり、Zilliz Cloudが特定のスカラー項目の値に基づいてエンティティを異なるパーティションに分配できるようにします。この機能はパーティション指向のマルチテナンシーの実装に役立ち、検索性能を向上させます。

この機能については、このページでは説明しません。詳細については、パーティションキーの使用を参照してください。

パーティションのリスト表示

コレクションを作成する際、Zilliz Cloudはコレクション内に_defaultという名前のパーティションも作成します。以下のようにコレクション内のパーティションを一覧表示できます。

from pymilvus import MilvusClient

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

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# 出力
#
# ["_default"]

パーティションの作成

コレクションにさらにパーティションを追加し、特定の条件に基づいてこれらのパーティションにエンティティを挿入できます。

client.create_partition(
collection_name="my_collection",
partition_name="partitionA"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# 出力
#
# ["_default", "partitionA"]

特定のパーティションの確認

以下のコードスニペットは、特定のコレクションにパーティションが存在するかどうかを確認する方法を示しています。

res = client.has_partition(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)

# 出力
#
# True

パーティションのロードとリリース

1つまたは特定のパーティションを個別にロードまたはリリースできます。

パーティションのロード

コレクション内の特定のパーティションを個別にロードできます。注意すべき点は、コレクション内にロードされていないパーティションが1つでもあると、コレクション全体のロード状態はロードされていないままになることです。

client.load_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

res = client.get_load_state(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)
# 出力
#
# {
# "state": "<LoadState: Loaded>"
# }

パーティションのリリース

特定のパーティションをリリースすることもできます。

client.release_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

res = client.get_load_state(
collection_name="my_collection",
partition_name="partitionA"
)

print(res)

# 出力
#
# {
# "state": "<LoadState: NotLoaded>"
# }

パーティション内のデータ操作

エンティティの挿入と削除

特定の操作内で挿入、アップサート、および削除操作を実行できます。詳細については、以下を参照してください:

検索とクエリ

特定のパーティション内で検索およびクエリを実行できます。詳細については、以下を参照してください:

パーティションの削除

不要になったパーティションを削除できます。パーティションを削除する前に、そのパーティションが解放されていることを確認してください。

client.release_partitions(
collection_name="my_collection",
partition_names=["partitionA"]
)

client.drop_partition(
collection_name="my_collection",
partition_name="partitionA"
)

res = client.list_partitions(
collection_name="my_collection"
)

print(res)

# ["_default"]